Re: libreoffice Rust-UNO binding on ppc64el (and ppc64)

Rene Engelhard <[email protected]> Mon, 1 Dec 2025 21:12:33 +0100
Newsgroups gmane.linux.debian.ports.powerpc
Organization Debian Project
Message-ID <[email protected]>
Hi,

Am 1. Dezember 2025 11:45:28 MEZ schrieb Trupti <[email protected]>:
>Hi,
>
>I tested this on a ppc64el LPAR with the 26.2.0~alpha-3 packages from experimental.
>
>The Rust UNO extension is installed and visible in the UI, 

Yeah:

(experimental_ppc64el-dchroot)rene@platti:~/libreoffice-26.2.0~alpha1$ unopkg list --bundled
All deployed bundled extensions:

Identifier: org.libreoffice/rust_uno/example
   Version: 1
   URL: vnd.sun.star.expand:$BUNDLED_EXTENSIONS/rust_uno-example
   is registered: yes
   Media-Type: application/vnd.sun.star.package-bundle
   Description:
   bundled Packages: {
       URL: vnd.sun.star.expand:$BUNDLED_EXTENSIONS/rust_uno-example/Addons.xcu
       is registered: yes
       Media-Type: application/vnd.sun.star.configuration-data
       Description:

       URL: vnd.sun.star.expand:$BUNDLED_EXTENSIONS/rust_uno-example/ProtocolHandler.xcu
       is registered: yes
       Media-Type: application/vnd.sun.star.configuration-data
       Description:

   }


There actually is no checking whether it actually works unfortunately anymore when registering I think
but in this case it's pre-installed anyway, so its too late.

But in a just-built LO this also works in that install as a user:

(experimental_ppc64el-dchroot)rene@platti:~/libreoffice-26.2.0~alpha1$ instdir/program/unopkg add workdir/Extension/rust_uno-example.oxt
(experimental_ppc64el-dchroot)rene@platti:~/libreoffice-26.2.0~alpha1$ instdir/program/unopkg list
All deployed user extensions:

Identifier: org.libreoffice/rust_uno/example
   Version: 1
   URL: vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/lu131802wh2dj.tmp_/rust_uno-example.oxt
   is registered: yes
   Media-Type: application/vnd.sun.star.package-bundle
   Description:
   bundled Packages: {
       URL: vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/lu131802wh2dj.tmp_/rust_uno-example.oxt/Addons.xcu
       is registered: yes
       Media-Type: application/vnd.sun.star.configuration-data
       Description:

       URL: vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/lu131802wh2dj.tmp_/rust_uno-example.oxt/ProtocolHandler.xcu
       is registered: yes
       Media-Type: application/vnd.sun.star.configuration-data
       Description:

   }

But still: (patchs in that script adapted):

(experimental_ppc64el-dchroot)rene@platti:~/libreoffice-26.2.0~alpha1$ debian/tests/test-rust_uno-example
====== Call Rust UNO -> Example menu entry provided by the extension ======

>but the "RustUNO" menu entry is disabled, so it cannot be executed manually.
>I have attached screenshot of UI.

Interesting.

That explains why it doesn't work at all. Without [1] the Rust-UNO menu even appeared
(even though librust_uno-cpplo.so was not found) in my tests but didn't work - but this is even worse...

Wonder why this happens, need to think about it/ask upstream...

>Running ldd on the extension shows missing libraries,
>ldd libreoffice/share/extensions/rust_uno-example/rust_uno-example.uno.so

Those are there.

>	librust_uno-cpplo.so => not found

https://packages.debian.org/experimental/ppc64el/libreoffice-core/filelist:
[..]
/usr/lib/libreoffice/program/librust_uno-cpplo.so
[...]

>	libreglo.so => not found
>	libunoidllo.so => not found
>	libxmlreaderlo.so => not found

Those too, see https://packages.debian.org/experimental/ppc64el/uno-libs-private/filelist

And they are supposed to be found via $ORIGIN in rpath. Which should work here, too, at least generally, otherwise LO would not even start
and the other tests would fail miserably, too.

$ objdump -p /usr/lib/libreoffice/share/extensions/rust_uno-example/rust_uno-example.uno.so  | grep ORI
   RUNPATH              $ORIGIN
[1]

And this works everywhere else...

Regards,

Rene
[1] cf. https://git.libreoffice.org/core/+/295c988cadd382cc4561c20e646225454a049488%5E%21