AIX Open Source

 View Only
  • 1.  Rust AIX: linker fails with undefined symbols

    Posted Wed April 10, 2024 03:38 AM
    Edited by C- -T Wed April 10, 2024 05:13 AM

    Hi,

    i tried to built a wheel of rpds-py with maturin for testing purposes, but the linker crashes with unresolved symbols.

    as a side note, "-bbigtoc" linker option is set, otherwise the linker crashes with TOC overflow.

    maybe this issue is somewhat related -> https://github.com/PyO3/pyo3/issues/341

    any ideas?

    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"`
    



    ------------------------------
    I regret starting this entire conversation
    ------------------------------



  • 2.  RE: Rust AIX: linker fails with undefined symbols

    Posted Thu April 11, 2024 08:32 AM

    after adding the python3.9 ldflags to RUSTFLAGS the wheel built successfully...should'nt the rust compiler itself take care of this...quite a annoyance IMHO

    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

    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 proc-macro2 v1.0.66
       Compiling once_cell v1.18.0
       Compiling unicode-ident v1.0.11
       Compiling libc v0.2.147
       Compiling parking_lot_core v0.9.8
       Compiling smallvec v1.11.0
       Compiling scopeguard v1.1.0
       Compiling cfg-if v1.0.0
       Compiling heck v0.4.1
       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 quote v1.0.31
       Compiling pyo3-build-config v0.20.2
       Compiling syn v2.0.32
       Compiling parking_lot v0.12.1
       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)
        Finished dev [unoptimized + debuginfo] target(s) in 56.71s
    📖 Found type stub file at rpds.pyi
    📦 Built wheel for CPython 3.9 to /tmp/rpds_py-0.18.0/target/wheels/rpds_py-0.18.0-cp39-cp39-aix_3_00CA8B904B00.whl


    ------------------------------
    I regret starting this entire conversation
    ------------------------------



  • 3.  RE: Rust AIX: linker fails with undefined symbols

    IBM Champion
    Posted Thu April 11, 2024 08:35 AM

    I know nothing about rpds-py, but the flags is usually what pyo3 does. It means it didn't find the correct flags for your python installation



    ------------------------------
    Andrey Klyachkin

    https://www.power-devops.com
    ------------------------------



  • 4.  RE: Rust AIX: linker fails with undefined symbols

    Posted Thu April 11, 2024 08:42 AM
    Edited by C- -T Tue April 16, 2024 04:11 AM

    i just used rpds-py for testing cause its rather "small" and overseeable. your point on pyo3 seems reasonable.



    ------------------------------
    I regret starting this entire conversation
    ------------------------------



  • 5.  RE: Rust AIX: linker fails with undefined symbols

    Posted Thu April 11, 2024 08:51 AM

    indeed not build flags are set...no idea what might be the problem here...way beyond my capacity.

    root@nimvie: /tmp/rpds_py-0.18.0 # PYO3_PRINT_CONFIG=1 cargo build
       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 heck v0.4.1
       Compiling cfg-if v1.0.0
       Compiling smallvec v1.11.0
       Compiling scopeguard v1.1.0
       Compiling static_assertions v1.1.0
       Compiling triomphe v0.1.9
       Compiling unindent v0.2.3
       Compiling indoc v2.0.4
       Compiling archery v1.1.0
       Compiling lock_api v0.4.10
       Compiling memoffset v0.9.0
       Compiling rpds v1.1.0
       Compiling quote v1.0.31
       Compiling pyo3-build-config v0.20.2
       Compiling syn v2.0.32
       Compiling parking_lot v0.12.1
       Compiling pyo3-ffi v0.20.2
       Compiling pyo3 v0.20.2
    error: failed to run custom build command for `pyo3-ffi v0.20.2`
    
    Caused by:
      process didn't exit successfully: `/tmp/rpds_py-0.18.0/target/debug/build/pyo3-ffi-406d3d4a023e3c99/build-script-build` (exit status: 101)
      --- stdout
      cargo:rerun-if-env-changed=PYO3_CROSS
      cargo:rerun-if-env-changed=PYO3_CROSS_LIB_DIR
      cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_VERSION
      cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_IMPLEMENTATION
      cargo:rerun-if-env-changed=PYO3_PRINT_CONFIG
    
      -- PYO3_PRINT_CONFIG=1 is set, printing configuration and halting compile --
      implementation=CPython
      version=3.9
      shared=true
      abi3=false
      lib_name=python3.9
      lib_dir=/usr/opt/python3/lib
      executable=/usr/bin/python3
      pointer_width=64
      build_flags=
      suppress_build_script_link_lines=false
    
      note: unset the PYO3_PRINT_CONFIG environment variable and retry to compile with the above config
    warning: build failed, waiting for other jobs to finish...
    


    ------------------------------
    I regret starting this entire conversation
    ------------------------------



  • 6.  RE: Rust AIX: linker fails with undefined symbols

    Posted Fri April 12, 2024 02:48 AM

    can someone from the ibm rust team chime in? seems has something to do with missing runtime linking support....

    https://github.com/PyO3/pyo3/issues/4068



    ------------------------------
    I regret starting this entire conversation
    ------------------------------



  • 7.  RE: Rust AIX: linker fails with undefined symbols

    Posted Fri April 12, 2024 03:20 AM

    Just updated the github thread. Pasting the same here, 

    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.



    ------------------------------
    Ayappan P
    ------------------------------



  • 8.  RE: Rust AIX: linker fails with undefined symbols

    IBM Champion
    Posted Mon April 15, 2024 12:38 PM

    I've got to my Rust development server, where I tested pyo3 under AIX.

    This is src/lib.rs

    use pyo3::prelude::*;
    use pyo3::wrap_pyfunction;
    
    #[pyfunction]
    pub fn add(left: usize, right: usize) -> PyResult<String> {
        Ok((left + right).to_string())
    }
    
    #[pymodule]
    /// A Python module implemented in Rust.
    fn aixpy(_py: Python, m: &PyModule) -> PyResult<()> {
        m.add_wrapped(wrap_pyfunction!(add))?;
    
        Ok(())
    }
    

    This is Cargo.toml:

    [package]
    name = "aixpy"
    version = "0.1.0"
    edition = "2021"
    
    # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
    
    [lib]
    name = "aixpy"
    crate-type = ["cdylib"]
    
    [target.powerpc64-ibm-aix]
    rustflags = [
            "-C", "link-arg=-bbigtoc",
    ]
    
    [dependencies]
    
    [dependencies.pyo3]
    version = "0.18.1"
    features = ["extension-module"]
    
    [patch.crates-io]
    pyo3 = { path = "/home/root/rust/pyo3", package = "pyo3" }
    

    This is .cargo/config:

    [target.powerpc64-ibm-aix]
    rustflags = [
      "-C", "link-arg=-L/usr/opt/python3/lib/python3.9/config-3.9",
      "-C", "link-arg=-lpython3.9",
      "-C", "link-arg=-lintl",
      "-C", "link-arg=-lc++abi",
      "-C", "link-arg=-bdynamic",
      "-C", "link-arg=-blazy",
    ]
    

    AFAIU the last file is the most important to link to AIX python.

    I hope it helps.



    ------------------------------
    Andrey Klyachkin

    https://www.power-devops.com
    ------------------------------



  • 9.  RE: Rust AIX: linker fails with undefined symbols

    IBM Champion
    Posted Mon April 15, 2024 12:42 PM

    This is btw  .cargo/config from my python-cryptography build:

    [env]
    PYO3_PYTHON="/opt/freeware/bin/python3"
    OBJECT_MODE="64"
    
    [target.powerpc64-ibm-aix]
    rustflags = [
      "-C", "link-arg=-L/opt/freeware/lib",
      "-C", "link-arg=-lpython3.9",
      "-C", "link-arg=-lintl",
      "-C", "link-arg=-lssl",
      "-C", "link-arg=-lcrypto",
      "-C", "link-arg=-b64",
      "-C", "link-arg=-blazy",
      "-C", "link-arg=-bbigtoc",
    ]
    
    


    ------------------------------
    Andrey Klyachkin

    https://www.power-devops.com
    ------------------------------



  • 10.  RE: Rust AIX: linker fails with undefined symbols

    Posted Tue April 16, 2024 04:11 AM

    pyo3 already fixed...

    https://github.com/PyO3/pyo3/pull/4073



    ------------------------------
    I regret starting this entire conversation
    ------------------------------