AIX Open Source

AIX Open Source

Share your experiences and connect with fellow developers to discover how to build and manage open source software for the AIX operating system

 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

    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

    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

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