# Copyright 2023-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit desktop unpacker xdg DESCRIPTION="Wemeet - Tencent Video Conferencing" HOMEPAGE="https://wemeet.qq.com" SRC_URI=" arm64? ( https://updatecdn.meeting.qq.com/cos/\ 206c30da5545dba38a29ccbc752dec94/TencentMeeting_0300000000_${PV}_arm64_default.publish.deb -> ${P}_arm64.deb ) loong? ( https://updatecdn.meeting.qq.com/cos/\ 23810840e7e8bb38536b2a59ae811343/TencentMeeting_0300000000_${PV}_loongarch64_default.publish.deb -> ${P}_loongarch64.deb ) " S="${WORKDIR}" LICENSE="wemeet_license" SLOT="0" KEYWORDS="-* ~arm64" RESTRICT="bindist test mirror" # ~loong TODO: # # * qtwebengine sandbox crashes on statx (may have to somehow port qtwebengine:5) # * provide libcurl-gnutls.so.4 compat symlink RDEPEND=" dev-libs/expat dev-libs/glib:2 dev-libs/nspr dev-libs/nss dev-libs/wayland media-libs/alsa-lib media-libs/fontconfig media-libs/freetype media-libs/harfbuzz media-libs/libglvnd media-libs/libpulse sys-apps/dbus sys-libs/zlib virtual/udev x11-libs/libdrm x11-libs/libICE x11-libs/libSM x11-libs/libX11 x11-libs/libxcb x11-libs/libXcomposite x11-libs/libXdamage x11-libs/libXext x11-libs/libXfixes x11-libs/libXinerama x11-libs/libxkbcommon x11-libs/libXrandr x11-libs/libXrender x11-libs/libXtst x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm loong? ( net-misc/curl[gnutls] virtual/loong-ow-compat ) " BDEPEND="dev-util/patchelf" QA_PREBUILT="opt/${PN}/*" src_prepare() { local f einfo "Unbundling libraries" pushd opt/${PN}/lib > /dev/null for f in lib*; do case "${f#lib}" in desktop*|ImSDK*|nxui*|qt*|service_manager*|tms*|ui*|wemeet*|xcast*|xnn*|yuv*|TencentSM*) # keep components of $PN itself continue ;; icu*|jpeg.so.8*) # * the bundled icu ABI is too old (soname is 60) for us to source # from system # * jpeg-compat is not packaged in ::gentoo (it is in ::steam-overlay # but we shouldn't force users to pull in other overlays anyway) continue ;; Qt5*) # we have to keep the entirety of Qt, because of an alarming error # seen with libQt5Widgets.so.5 unbundled: # # /opt/wemeet/bin/wemeetapp: symbol lookup error: /opt/wemeet/lib/libwemeet_framework.so: undefined symbol: _ZN7QWidget11eventFilterEP7QObjectP6QEvent, version Qt_5 # # which means the Qt ABI is different in the Tencent build env than # ours, and that it is unsafe for us to swap the libraries. continue ;; esac einfo " $f" rm "$f" || die done popd > /dev/null einfo "Unbundling plugins to fix libqxcb-glx-integration SIGSEGV" rm -r opt/wemeet/plugins/xcbglintegrations || die default } src_install() { # Fix RPATHs to ensure the libraries can be found for f in $(find "opt/${PN}/bin" "opt/${PN}/plugins") ; do [[ -f ${f} && $(od -t x1 -N 4 "${f}") == *"7f 45 4c 46"* ]] || continue patchelf --set-rpath "/opt/${PN}/lib" ${f} || die "patchelf failed on ${f}" done for f in $(find "opt/${PN}/lib") ; do [[ -f ${f} && $(od -t x1 -N 4 "${f}") == *"7f 45 4c 46"* ]] || continue patchelf --set-rpath '$ORIGIN' ${f} || die "patchelf failed on ${f}" done insinto "/opt/${PN}" exeinto "/opt/${PN}" doins -r opt/"${PN}"/* # Force X11 # If wayland is used, wemeet will just die: # /opt/wemeet/bin/wemeetapp: symbol lookup error: # /usr/lib64/libwayland-cursor.so.0: undefined symbol: wl_proxy_marshal_flags # tested with 2.8.0.3 and dev-libs/wayland-1.20.0 newexe "${FILESDIR}/wemeetapp-1.sh" wemeetapp.sh fperms +x "/opt/${PN}/bin/wemeetapp" fperms +x "/opt/${PN}/bin/QtWebEngineProcess" # put launcher into PATH dosym "../../opt/${PN}/wemeetapp.sh" /usr/bin/wemeetapp sed -i "s/^Icon=.*/Icon=wemeetapp/g" "usr/share/applications/wemeetapp.desktop" || die sed -i "s/^Exec=.*/Exec=wemeetapp %u/g" "usr/share/applications/wemeetapp.desktop" || die sed -i -e '$a Comment=Tencent Meeting Linux Client\n\' \ -e 'Comment[zh_CN]=腾讯会议Linux客户端\n\' \ -e 'Keywords=wemeet;tencent;meeting;\n' \ "usr/share/applications/wemeetapp.desktop" || die domenu "usr/share/applications/wemeetapp.desktop" newicon -s scalable "opt/${PN}/wemeet.svg" "wemeetapp.svg" for i in 16 32 64 128 256; do png_file="opt/${PN}/icons/hicolor/${i}x${i}/mimetypes/wemeetapp.png" if [ -e "${png_file}" ]; then newicon -s "${i}" -c mimetypes "${png_file}" "wemeetapp.png" fi done }