Quoting Jan Beich <[email protected]> (from Mon, 24 Jul 2023 14:50:48 +0200):

Alexander Leidinger <[email protected]> writes:

Quoting Jan Beich <[email protected]> (from Mon, 24 Jul 2023 13:52:43 +0200):

Alexander Leidinger <[email protected]> writes:

Hi,

a build with non-standard port options (mostly nox11 und related stuff
for a headless system, except for some ports where this doesn't work)
is giving me an unresolved symbol in
libQt6WebEngineCore.so.6.4.2. This symbol is
_ZN7sandbox6policy12SandboxLinux11GetInstanceEv.

I'm seeking some insight where this symbol comes from, so it would be
nice if someone could report back if their
libQt6WebEngineCore.so.6.4.2 also has this symbol as unresolved and
which libary does provide this symbol via:
  find /usr/local/lib -type f -print0 | xargs -0 nm -dynamic
  --print-file-name | grep SandboxLinux

The symbol is defined by WebEngine itself.

$ cd www/qt6-webengine
$ make clean patch
$ cd `make -V WRKSRC`
$ rg -lF 'SandboxLinux::GetInstance() {'
src/3rdparty/chromium/sandbox/policy/linux/sandbox_linux.cc
src/3rdparty/chromium/sandbox/policy/openbsd/sandbox_openbsd.cc
src/3rdparty/chromium/sandbox/policy/freebsd/sandbox_freebsd.cc

That doesn't sound promising. The qt6-webengine build succeeded, but
this symbol is missing... :(
As the port only has the audio options, it's not some direct influence
which is causing it, but some indirect dependency on something in the
dependecy chain I would assume.

If -Wl,--no-undefined (or -Wl,-z,defs) isn't passed then DSOs are
allowed to have unresolved references. This is useful for plugins
unlike shared libraries.

But then the sandbox code should be linked in even if there are some symbols (e.g. from X11) not available...

I had a look at the faq and explanation of the sandbox at
chromium.googlesource.com, but I didn't see any low level stuff which
could help to identify why it isn't in the lib.

Check the build glue and/or ifdefs.

src/3rdparty/chromium/sandbox/policy/BUILD.gn:

  if ((is_linux || is_chromeos) && !is_bsd) {
    sources += [
    ...
      "linux/sandbox_linux.cc",
      "linux/sandbox_linux.h",
    ...
    ]
  ...
  }
  if (is_openbsd) {
    sources += [
      "openbsd/sandbox_openbsd.cc",
      "openbsd/sandbox_openbsd.h",
    ]
  ...
  }
  # Required to avoid assertion errors during build of QtPDF
  if (is_freebsd && ozone_platform_x11) {
    sources += [
      "freebsd/sandbox_freebsd.cc",
      "freebsd/sandbox_freebsd.h",
    ]
  ...
  }

src/3rdparty/chromium/build/config/ozone.gni:

    } else if (is_linux && !is_bsd) {
      ozone_platform = "x11"
      ozone_platform_wayland = true
      ozone_platform_x11 = true
    } else if (is_openbsd) {
      ozone_platform = "x11"
      ozone_platform_wayland = false
      ozone_platform_x11 = true
    } else if (is_freebsd) {
      ozone_platform = "x11"
      ozone_platform_wayland = true
      ozone_platform_x11 = true


In general I have X11 and wayland disabled in the port options, except in some strategic places which resulted in build failures before. Seems some ports have changed regarding this and I need to find out what causes the sandbox code not to be included. I see references to X11 libs in the webengine libs, so :
---snip---
/usr/local/lib/qt6/libQt6WebEngineCore.so.6.4.2:
        libthr.so.3 => /lib/libthr.so.3 (0x2762513e0000)
        libnss3.so => /usr/local/lib/libnss3.so (0x27625c482000)
        libsmime3.so => /usr/local/lib/libsmime3.so (0x27625bb0c000)
        libnssutil3.so => /usr/local/lib/libnssutil3.so (0x27625d457000)
        libplds4.so => /usr/local/lib/libplds4.so (0x27625dd34000)
        libplc4.so => /usr/local/lib/libplc4.so (0x27625ef9f000)
        libnspr4.so => /usr/local/lib/libnspr4.so (0x27625e740000)
        libdl.so.1 => /usr/lib/libdl.so.1 (0x27625fb67000)
        libkvm.so.7 => /lib/libkvm.so.7 (0x2762606d3000)
        libexecinfo.so.1 => /usr/lib/libexecinfo.so.1 (0x276260b5a000)
        libutil.so.9 => /lib/libutil.so.9 (0x2762625a6000)
        libevent-2.1.so.7 => /usr/local/lib/libevent-2.1.so.7 (0x2762617bd000)
        libz.so.6 => /lib/libz.so.6 (0x276263772000)
        libjpeg.so.8 => /usr/local/lib/libjpeg.so.8 (0x276262755000)
        libm.so.5 => /lib/libm.so.5 (0x2762646e6000)
        libopus.so.0 => /usr/local/lib/libopus.so.0 (0x2762655ce000)
        libavcodec.so.60 => /usr/local/lib/libavcodec.so.60 (0x276268c00000)
        libavformat.so.60 => /usr/local/lib/libavformat.so.60 (0x276265730000)
        libavutil.so.58 => /usr/local/lib/libavutil.so.58 (0x2762660a4000)
        libopenh264.so.6 => /usr/local/lib/libopenh264.so.6 (0x276266a54000)
        libvpx.so.8 => /usr/local/lib/libvpx.so.8 (0x27626773d000)
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x2762689f2000)
        libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x27626b144000)
        libwebp.so.7 => /usr/local/lib/libwebp.so.7 (0x27626cfce000)
        libwebpmux.so.3 => /usr/local/lib/libwebpmux.so.3 (0x27626a5c6000)
        libwebpdemux.so.2 => /usr/local/lib/libwebpdemux.so.2 (0x27626bb60000)
        libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x27626c01b000)
        libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x27626dcb7000)
libharfbuzz-subset.so.0 => /usr/local/lib/libharfbuzz-subset.so.0 (0x27626ea2f000)
        libharfbuzz.so.0 => /usr/local/lib/libharfbuzz.so.0 (0x2762705aa000)
        libre2.so.10 => /usr/local/lib/libre2.so.10 (0x27626f387000)
        libpci.so.3 => /usr/local/lib/libpci.so.3 (0x27626f463000)
        libasound.so.2 => /usr/local/lib/libasound.so.2 (0x276270081000)
        libsnappy.so.1 => /usr/local/lib/libsnappy.so.1 (0x276270948000)
        libdbus-1.so.3 => /usr/local/lib/libdbus-1.so.3 (0x2762710e5000)
        libminizip.so.1 => /usr/local/lib/libminizip.so.1 (0x276271fbe000)
        libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x2762721a3000)
        libxslt.so.1 => /usr/local/lib/libxslt.so.1 (0x276273082000)
        liblcms2.so.2 => /usr/local/lib/liblcms2.so.2 (0x276273702000)
liblcms2_fast_float.so.1 => /usr/local/lib/liblcms2_fast_float.so.1 (0x276274ea1000) liblcms2_threaded.so.1 => /usr/local/lib/liblcms2_threaded.so.1 (0x27627436e000)
        libxkbcommon.so.0 => /usr/local/lib/libxkbcommon.so.0 (0x276275969000)
libQt6Quick.so.6 => /usr/local/lib/qt6/libQt6Quick.so.6 (0x276277400000) libQt6OpenGL.so.6 => /usr/local/lib/qt6/libQt6OpenGL.so.6 (0x276276101000)
        libQt6Gui.so.6 => /usr/local/lib/qt6/libQt6Gui.so.6 (0x276279800000)
        libGLX.so.0 => /usr/local/lib/libGLX.so.0 (0x276276583000)
        libOpenGL.so.0 => /usr/local/lib/libOpenGL.so.0 (0x276277e47000)
libQt6QmlModels.so.6 => /usr/local/lib/qt6/libQt6QmlModels.so.6 (0x276278c81000) libQt6WebChannel.so.6 => /usr/local/lib/qt6/libQt6WebChannel.so.6 (0x27627ab7f000)
        libQt6Qml.so.6 => /usr/local/lib/qt6/libQt6Qml.so.6 (0x27627bcaf000)
libQt6Network.so.6 => /usr/local/lib/qt6/libQt6Network.so.6 (0x27627dbf9000) libQt6Positioning.so.6 => /usr/local/lib/qt6/libQt6Positioning.so.6 (0x27627b9e2000)
        libQt6Core.so.6 => /usr/local/lib/qt6/libQt6Core.so.6 (0x276280c00000)
        libc++.so.1 => /lib/libc++.so.1 (0x27627c956000)
        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x27627d0c5000)
        libc.so.7 => /lib/libc.so.7 (0x276250578000)
        libelf.so.2 => /lib/libelf.so.2 (0x27624f87e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x27627ebf0000)
libswresample.so.4 => /usr/local/lib/libswresample.so.4 (0x27627ede6000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0x27627f993000)
        libdav1d.so.6 => /usr/local/lib/libdav1d.so.6 (0x276280480000)
        libaom.so.3 => /usr/local/lib/libaom.so.3 (0x276283150000)
        libjxl.so.0.8 => /usr/local/lib/libjxl.so.0.8 (0x276281212000)
libjxl_threads.so.0.8 => /usr/local/lib/libjxl_threads.so.0.8 (0x27628257f000)
        libSvtAv1Enc.so.1 => /usr/local/lib/libSvtAv1Enc.so.1 (0x276284903000)
        libtheoraenc.so.1 => /usr/local/lib/libtheoraenc.so.1 (0x27628532b000)
        libtheoradec.so.1 => /usr/local/lib/libtheoradec.so.1 (0x276285980000)
        libvorbis.so.0 => /usr/local/lib/libvorbis.so.0 (0x27628723d000)
        libvorbisenc.so.2 => /usr/local/lib/libvorbisenc.so.2 (0x276286835000)
        libx264.so.164 => /usr/local/lib/libx264.so.164 (0x27628783e000)
        libx265.so.192 => /usr/local/lib/libx265.so.192 (0x276288ea2000)
libSvtHevcEnc.so.1 => /usr/local/lib/libSvtHevcEnc.so.1 (0x27628c800000)
        libxvidcore.so.4 => /usr/local/lib/libxvidcore.so.4 (0x276288596000)
        libbz2.so.4 => /usr/lib/libbz2.so.4 (0x27628ac62000)
        libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x27628b80f000)
        libgnutls.so.30 => /usr/local/lib/libgnutls.so.30 (0x27628d983000)
        libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x27628deae000)
        libsharpyuv.so.0 => /usr/local/lib/libsharpyuv.so.0 (0x27628efdf000)
        libbrotlidec.so.1 => /usr/local/lib/libbrotlidec.so.1 (0x27628edb4000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x27628f2b7000)
        libgraphite2.so.3 => /usr/local/lib/libgraphite2.so.3 (0x27629100c000)
        librt.so.1 => /usr/lib/librt.so.1 (0x27628fc7a000)
        libicui18n.so.73 => /usr/local/lib/libicui18n.so.73 (0x27628fd28000)
        libicuuc.so.73 => /usr/local/lib/libicuuc.so.73 (0x276291f0d000)
        libicudata.so.73 => /usr/local/lib/libicudata.so.73 (0x27629365e000)
        libEGL.so.1 => /usr/local/lib/libEGL.so.1 (0x27629274b000)
        libQt6DBus.so.6 => /usr/local/lib/qt6/libQt6DBus.so.6 (0x2762943b6000)
libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x276294d4c000) libGLdispatch.so.0 => /usr/local/lib/libGLdispatch.so.0 (0x276295966000)
        libX11.so.6 => /usr/local/lib/libX11.so.6 (0x276295ed1000)
        libzstd.so.1 => /usr/local/lib/libzstd.so.1 (0x276296f08000)
libdouble-conversion.so.3 => /usr/local/lib/libdouble-conversion.so.3 (0x276298932000)
        libpcre2-16.so.0 => /usr/local/lib/libpcre2-16.so.0 (0x2762976cc000)
        libmd.so.6 => /lib/libmd.so.6 (0x276297e94000)
        libhwy.so.1 => /usr/local/lib/libhwy.so.1 (0x276298ca4000)
        libbrotlienc.so.1 => /usr/local/lib/libbrotlienc.so.1 (0x27629a1f8000)
        libogg.so.0 => /usr/local/lib/libogg.so.0 (0x27629913d000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x276299b34000)
        libp11-kit.so.0 => /usr/local/lib/libp11-kit.so.0 (0x27629afc4000)
        libunistring.so.5 => /usr/local/lib/libunistring.so.5 (0x27629b413000)
        libtasn1.so.6 => /usr/local/lib/libtasn1.so.6 (0x27629c8c1000)
        libnettle.so.8 => /usr/local/lib/libnettle.so.8 (0x27629bef7000)
        libhogweed.so.6 => /usr/local/lib/libhogweed.so.6 (0x27629cf3b000)
libbrotlicommon.so.1 => /usr/local/lib/libbrotlicommon.so.1 (0x27629dea6000)
        libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x27629ee92000)
        libpcre2-8.so.0 => /usr/local/lib/libpcre2-8.so.0 (0x27629f868000)
        libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x2762a0c13000)
        libffi.so.8 => /usr/local/lib/libffi.so.8 (0x2762a0843000)
        libXau.so.6 => /usr/local/lib/libXau.so.6 (0x2762a1921000)
        libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x2762a214f000)
---snip---

Bye,
Alexander.

--
http://www.Leidinger.net [email protected]: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    [email protected]  : PGP 0x8F31830F9F2772BF

Attachment: pgpmS842g2bBD.pgp
Description: Digitale PGP-Signatur

Reply via email to