# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit desktop wrapper xdg-utils DESCRIPTION="ICA Client for Citrix Presentation servers" HOMEPAGE="https://www.citrix.com/" SRC_URI="linuxx64-${PV}.tar.gz" LICENSE="icaclient" SLOT="0" KEYWORDS="-* ~amd64" IUSE="l10n_de l10n_es l10n_fr l10n_ja l10n_zh-CN hdx usb" RESTRICT="mirror strip fetch" ICAROOT="/opt/Citrix/ICAClient" QA_PREBUILT="${ICAROOT#/}/*" # we have binaries for two conflicting kerberos implementations # https://bugs.gentoo.org/792090 # https://bugs.gentoo.org/775995 REQUIRES_EXCLUDE=" libgssapi.so.3 libgssapi_krb5.so.2 libkrb5.so.3 " # when using media-plugins/hdx-realtime-media-engine we better not ignore that REQUIRES_EXCLUDE="${REQUIRES_EXCLUDE} !hdx? ( libunwind.so.1 ) " # we have binaries which would still support gstreamer:0.10 REQUIRES_EXCLUDE="${REQUIRES_EXCLUDE} libgstapp-0.10.so.0 libgstbase-0.10.so.0 libgstinterfaces-0.10.so.0 libgstpbutils-0.10.so.0 libgstreamer-0.10.so.0 " # video background blurring, optional REQUIRES_EXCLUDE="${REQUIRES_EXCLUDE} libopencv_core.so.407 libopencv_imgcodecs.so.407 libopencv_imgproc.so.407 " BDEPEND=" hdx? ( media-plugins/hdx-realtime-media-engine ) " RDEPEND=" >=app-accessibility/at-spi2-core-2.46.0:2 app-crypt/libsecret dev-libs/glib:2 dev-libs/libxml2 media-fonts/font-adobe-100dpi media-fonts/font-cursor-misc media-fonts/font-misc-ethiopic media-fonts/font-misc-misc media-fonts/font-xfree86-type1 media-libs/alsa-lib media-libs/fontconfig media-libs/freetype media-libs/gst-plugins-base:1.0 media-libs/gstreamer:1.0 media-libs/libogg media-libs/libpng media-libs/libpulse media-libs/libvorbis media-libs/mesa media-libs/speex media-libs/speexdsp net-libs/libsoup:2.4 net-libs/webkit-gtk:4 sys-apps/util-linux sys-libs/libcxx sys-libs/libcxxabi sys-libs/zlib virtual/krb5 virtual/libudev x11-libs/cairo x11-libs/gdk-pixbuf:2 x11-libs/gtk+:2 x11-libs/gtk+:3 x11-libs/libX11 x11-libs/libXaw x11-libs/libXcomposite x11-libs/libXdamage x11-libs/libXext x11-libs/libXfixes x11-libs/libXinerama x11-libs/libXmu x11-libs/libXrender x11-libs/libXt x11-libs/pango ${BDEPEND} !hdx? ( !media-plugins/hdx-realtime-media-engine ) usb? ( virtual/libudev ) " DEPEND="dev-util/patchelf" pkg_nofetch() { elog "Download the client file ${A} from https://www.citrix.com/downloads/workspace-app/" elog "and place it into your DISTDIR directory." } pkg_setup() { case ${ARCH} in amd64) ICAARCH=linuxx64 ;; *) eerror "Given architecture is not supported by Citrix." ;; esac } src_unpack() { default mv "${WORKDIR}/${ICAARCH}/${ICAARCH}.cor" "${S}" || die } src_prepare() { default rm lib/UIDialogLibWebKit.so || die cp nls/en/module.ini . || die if use usb; then # inspired by debian usb support package postinst sed -i -e 's/^[ \t]*VirtualDriver[ \t]*=.*$/&, GenericUSB/' module.ini || die sed -i -e '/\[ICA 3.0\]/a\GenericUSB=on' module.ini || true echo "[GenericUSB]" >> module.ini || true echo "DriverName=VDGUSB.DLL" >> module.ini fi if use hdx; then "${BROOT}${ICAROOT}"/rtme/RTMEconfig -install -ignoremm || die mv new_module.ini module.ini || die fi mv module.ini config/ || die } src_install() { local bin tmpl dest dodir "${ICAROOT}" keepdir /etc/icaclient insinto "${ICAROOT}" exeinto "${ICAROOT}" doexe *.DLL libproxy.so wfica AuthManagerDaemon PrimaryAuthManager selfservice ServiceRecord if use usb; then doexe usb/ctxusb usb/ctxusbd usb/ctx_usb_isactive doins usb/*.DLL insinto /etc/icaclient doins usb/usb.conf dosym ../../../etc/icaclient/usb.conf "${ICAROOT}"/usb.conf insinto "${ICAROOT}" fi # libwebrtc has a DT_RPATH problem patchelf --set-rpath '$ORIGIN' lib/libwebrpc.so || die exeinto "${ICAROOT}"/lib doexe lib/*.so for dest in "${ICAROOT}"{,/nls/en{,.UTF-8}} ; do insinto "${dest}" doins nls/en.UTF-8/eula.txt done insinto "${ICAROOT}"/config doins config/* mv "${ED}/${ICAROOT}"/config/module.ini "${ED}"/etc/icaclient/ || die dosym ../../../../etc/icaclient/module.ini "${ICAROOT}"/config/module.ini for tmpl in {appsrv,wfclient}.template ; do newins nls/en/${tmpl} ${tmpl/template/ini} done touch "${ED}/${ICAROOT}"/config/.server || die insinto "${ICAROOT}"/gtk doins gtk/* insinto "${ICAROOT}"/gtk/glade doins gtk/glade/* insinto "${ICAROOT}"/site doins -r site/* dodir "${ICAROOT}"/help insinto "${ICAROOT}"/config/usertemplate doins config/usertemplate/* local lang LANGCODES=( en ) use l10n_de && LANGCODES+=( de ) use l10n_es && LANGCODES+=( es ) use l10n_fr && LANGCODES+=( fr ) use l10n_ja && LANGCODES+=( ja ) use l10n_zh-CN && LANGCODES+=( zh_CN ) for lang in ${LANGCODES[@]} ; do insinto "${ICAROOT}"/nls/${lang} doins nls/${lang}/* insinto "${ICAROOT}"/nls/$lang/UTF-8 doins nls/${lang}.UTF-8/* insinto "${ICAROOT}"/nls/${lang}/LC_MESSAGES doins nls/${lang}/LC_MESSAGES/* insinto "${ICAROOT}"/nls/${lang} dosym UTF-8 "${ICAROOT}"/nls/${lang}/utf8 for tmpl in {appsrv,wfclient}.template ; do cp "${ED}/${ICAROOT}"/nls/${lang}/${tmpl} \ "${ED}/${ICAROOT}"/nls/${lang}/${tmpl/template/ini} \ || die done done insinto "${ICAROOT}"/nls dosym en /opt/Citrix/ICAClient/nls/C insinto "${ICAROOT}"/icons doins icons/* insinto "${ICAROOT}"/keyboard doins keyboard/* cp -a util "${ED}/${ICAROOT}" || die test -f util/HdxRtcEngine && fperms 0755 "${ICAROOT}"/util/HdxRtcEngine dosym ../../../../etc/ssl/certs "${ICAROOT}"/keystore/cacerts insinto "${ICAROOT}"/keystore/intcerts doins keystore/intcerts/* local other_files=( icasessionmgr NativeMessagingHost UtilDaemon ) exeinto "${ICAROOT}" for bin in ${other_files[@]} ; do doexe ${bin} done # https://bugs.gentoo.org/655922 dosym gst_play1.0 "${ICAROOT}"/util/gst_play dosym gst_read1.0 "${ICAROOT}"/util/gst_read dosym libgstflatstm1.0.so "${ICAROOT}"/util/libgstflatstm.so doenvd "${FILESDIR}"/10ICAClient for bin in configmgr conncenter new_store ; do make_wrapper ${bin} "${ICAROOT}"/util/${bin} . "${ICAROOT}"/util done for bin in selfservice wfica ; do make_wrapper ${bin} "${ICAROOT}"/${bin} . "${ICAROOT}" done dodir /etc/revdep-rebuild/ echo "SEARCH_DIRS_MASK=\"${ICAROOT}\"" \ > "${ED}"/etc/revdep-rebuild/70icaclient insinto "${ICAROOT}"/pkginf newins "${WORKDIR}"/PkgId Ver.core."${ICAARCH}" # 651926 domenu "${FILESDIR}"/*.desktop insinto /usr/share/mime/packages doins desktop/Citrix-mime_types.xml } pkg_preinst() { # previous versions of the ebuild created that and left it around # we own it now and avoid conflict warnings with this rm -f "${ROOT}${ICAROOT}/config/module.ini" } pkg_postinst() { xdg_desktop_database_update xdg_mimeinfo_database_update if ! use hdx; then if [ -x "${ROOT}${ICAROOT}"/rtme/RTMEconfig ]; then ewarn "Starting from 22.12.0.12 you have to set USE=hdx if you want" ewarn "to use media-plugins/hdx-realtime-media-engine. Which does" ewarn "not need to be explicitly installed anymore." fi fi if use usb; then einfo einfo "Add users of ${CATEGORY}/${PN} to group 'usb' for redirect to work" einfo fi } pkg_postrm() { xdg_desktop_database_update xdg_mimeinfo_database_update }