# $Id$ PNAME="ica-client" PVER="13.3.0.344519" PBUILD="r3" PCAT="net-misc" DESCRIPTION="Citrix ICA client." HOMEPAGE="http://www.citrix.com/" # install usb daemon, 1=true/ 0=false USBDAEMON=0 SPECIAL_VARS="USBDAEMON" DEPEND=">= sys-libs/libstdc++-5.1 >= sys-libs/zlib-1.2 >= dev-libs/glib2-2.44 >= dev-libs/atk-2.16 >= dev-libs/libxml2-2.9 >= net-dns/libidn-1.31 >= x11-libs/libX11-1.6 >= x11-libs/libXext-1.3 >= x11-libs/libXfixes-5 >= x11-libs/libXinerama-1.1 >= x11-libs/libXrender-0.9 >= x11-libs/cairo-1.14 >= x11-libs/gdk-pixbuf-2.30 >= x11-libs/pango-1.36 >= x11-libs/gtk2+-2.24 >= media-fonts/font-adobe-75dpi-1" # >= media-libs/alsa-lib-1.0.29 # >= media-libs/libogg-1.3 # >= media-libs/libvorbis-1.3 if [[ ${USBDAEMON} = 1 ]] then DEPEND="${DEPEND} >= sys-fs/udev-218" fi SDEPEND=">= virtual/sed" SRCFILE="linuxx86-${PVER}.tar.gz" SRCDIR="${BUILDDIR}/${PNAME}-${PVER}" # only keep the essential files to run wfica, pnabrowse or storebrowse ALX_PKG_KEEP="etc/env.d/10ica-client opt/Citrix/ICAClient/AuthManagerDaemon opt/Citrix/ICAClient/CHARICONV.DLL opt/Citrix/ICAClient/PDCRYPT1.DLL opt/Citrix/ICAClient/PrimaryAuthManager opt/Citrix/ICAClient/ServiceRecord opt/Citrix/ICAClient/libctxssl.so opt/Citrix/ICAClient/libproxy.so opt/Citrix/ICAClient/wfica opt/Citrix/ICAClient/config opt/Citrix/ICAClient/gtk opt/Citrix/ICAClient/icons/receiver.png opt/Citrix/ICAClient/keyboard/keyboard.ini opt/Citrix/ICAClient/keyboard/automatic.kbd opt/Citrix/ICAClient/keyboard/linux.kbd opt/Citrix/ICAClient/keystore/cacerts opt/Citrix/ICAClient/lib/UIDialogLib.so opt/Citrix/ICAClient/lib/libAMSDK.so opt/Citrix/ICAClient/nls/C opt/Citrix/ICAClient/nls/en/appsrv.ini opt/Citrix/ICAClient/nls/en/eula.txt opt/Citrix/ICAClient/nls/en/module.ini opt/Citrix/ICAClient/nls/en/pna.nls opt/Citrix/ICAClient/nls/en/wfclient.ini opt/Citrix/ICAClient/nls/en.UTF-8/eula.txt opt/Citrix/ICAClient/nls/en.UTF8 opt/Citrix/ICAClient/nls/en.utf8 opt/Citrix/ICAClient/util/ctx_rehash opt/Citrix/ICAClient/util/new_store opt/Citrix/ICAClient/util/pnabrowse opt/Citrix/ICAClient/util/pnabrowse_launch opt/Citrix/ICAClient/util/storebrowse opt/Citrix/ICAClient/eula.txt usr/bin/wfica usr/bin/pnabrowse usr/bin/storebrowse" if [[ ${USBDAEMON} = 1 ]] then ALX_PKG_KEEP+=" usr/lib/systemd/system/ctxusb.service usr/lib/udev/rules.d/85-ctxusbd.rules opt/Citrix/ICAClient/ctx_usb_isactive opt/Citrix/ICAClient/usb.conf opt/Citrix/ICAClient/VDGUSB.DLL opt/Citrix/ICAClient/ctxusbd opt/Citrix/ICAClient/ctxusb usr/bin/ctx_usb_isactive usr/bin/ctxusb usr/sbin/ctxusbd etc/tmpfiles.d/ctxusb.conf" fi sminclude mtools udev systemd alx-split # += to add injection files (alx.sminc) SRC_URI+=( http://download2.citrix.com/FILES/en/products/Linux${PVER:0:2}/${SRCFILE} mirror://ica-client/${SRCFILE} ) if [[ ${USBDAEMON} = 1 ]] then SRC_URI+=( mirror://ica-client/ctxusbd.service mirror://ica-client/ctxusbd.rules mirror://ica-client/ctxusbd.tmpfilesd ) fi install_from_psf() { local psf line type file symlink pkg attr user group psf="$1" minstalldir /opt/Citrix/ICAClient || die cat ${psf} | while read line do set $line type="$1" file="$2" case $type in s|h) symlink="$3" shift ;; d|f) symlink="" ;; esac pkg="$3" attr="$4" user="$5" group="$6" case ${file} in .) continue ;; esac case ${type} in d) minstalldir /opt/Citrix/ICAClient/${file} || die ;; f) case ${attr} in 555) minstallexec ${file} /opt/Citrix/ICAClient/${file} || die ;; 444) minstallfile ${file} /opt/Citrix/ICAClient/${file} || die ;; esac ;; s) mlink ${symlink} /opt/Citrix/ICAClient/${file} || die ;; h) mlink ${symlink} /opt/Citrix/ICAClient/${file} || die ;; esac done } src_prepare() { munpack ${SRCFILE} ${SRCDIR} || die cd ${SRCDIR}/linuxx86/linuxx86.cor sed 's:###ICAROOT###:/opt/Citrix/ICAClient:g' usb/ctxusbd.rc usb/ica-usb.rules || die } alx_generic_src_install() { cd ${SRCDIR}/linuxx86/linuxx86.cor minstalldir /opt/Citrix/ICAClient || die # read psf file and install files and symlinks install_from_psf ${SRCDIR}/linuxx86/linuxx86.psf || die # eula symlink is a must or wfica and co will not find UIDialog.so mlink ./nls/en.UTF-8/eula.txt /opt/Citrix/ICAClient/eula.txt || die mlink ../en.UTF-8/eula.txt /opt/Citrix/ICAClient/nls/en/eula.txt || die # symlink some inis to config dir from nls dir minstalldir /opt/Citrix/ICAClient/config || die mlink ../nls/en/appsrv.ini /opt/Citrix/ICAClient/config/appsrv.ini || die mlink ../nls/en/module.ini /opt/Citrix/ICAClient/config/module.ini || die mlink ../nls/en/wfclient.ini /opt/Citrix/ICAClient/config/wfclient.ini || die # make this installation a server installation to seperate config files for every user memptyfile /opt/Citrix/ICAClient/config/.server || die # create wfica.sh MCONFIG="/opt/Citrix/ICAClient/wfica.sh" mclearconfig || die maddconfig '#!/bin/sh' || die maddconfig 'ICAROOT=/opt/Citrix/ICAClient' || die maddconfig 'export ICAROOT' || die maddconfig 'LD_LIBRARY_PATH=${ICAROOT}/lib' || die maddconfig 'export LD_LIBRARY_PATH' || die maddconfig '$ICAROOT/wfica -file $1' || die mchmod 0755 /opt/Citrix/ICAClient/wfica.sh || die # create wfica_assoc.sh MCONFIG="/opt/Citrix/ICAClient/wfica_assoc.sh" mclearconfig || die maddconfig '#!/bin/sh' || die maddconfig 'ICAROOT=/opt/Citrix/ICAClient' || die maddconfig 'export ICAROOT' || die maddconfig '$ICAROOT/wfica -associate -fileparam $1' || die mchmod 0755 /opt/Citrix/ICAClient/wfica_assoc.sh || die # install wrappers to prevent slowdowns with other locales than 'C' minstalldir /usr/bin || die MCONFIG="/usr/bin/wfica" mclearconfig || die maddconfig 'env LC_ALL="" LANG="" LD_LIBRARY_PATH="/opt/Citrix/ICAClient/lib" /opt/Citrix/ICAClient/wfica $*' || die mchmod 0755 /usr/bin/wfica || die MCONFIG="/usr/bin/pnabrowse" mclearconfig || die maddconfig 'env LC_ALL="" LANG="" LD_LIBRARY_PATH="/opt/Citrix/ICAClient/lib" /opt/Citrix/ICAClient/util/pnabrowse $*' || die mchmod 0755 /usr/bin/pnabrowse || die MCONFIG="/usr/bin/storebrowse" mclearconfig || die maddconfig 'env LC_ALL="" LANG="" LD_LIBRARY_PATH="/opt/Citrix/ICAClient/lib" /opt/Citrix/ICAClient/util/storebrowse $*' || die mchmod 0755 /usr/bin/storebrowse || die # fixes some hardcoded pathes minstalldir /etc/env.d || die MCONFIG="/etc/env.d/10ica-client" mclearconfig || die maddconfig 'ICAROOT=/opt/Citrix/ICAClient' || die # # set default browserprotocol to tcp/ip # # ( citrix named this in their config as UDP) # sed -i "s:^\(BrowserProtocol=\).*:\1UDP:" ${BINDIR}/opt/Citrix/ICAClient/config/wfclient.ini || die # # newer XenApp use https sed -i "s:^\(BrowserProtocol=\).*:\1HTTPonTCP:" ${BINDIR}/opt/Citrix/ICAClient/config/wfclient.ini || die # auto enable com port mapping for com1 and com2 sed -i 's:^\(\[WFClient\]\):\1\nComPort1=/dev/ttyS1\nComPort2=/dev/ttyS2\nLastComPortNum=2\n:' \ ${BINDIR}/opt/Citrix/ICAClient/config/wfclient.ini || die if [[ ${USBDAEMON} = 1 ]] then cd ${SRCDIR}/linuxx86/linuxx86.cor/usb mcopy -a \* /opt/Citrix/ICAClient || die mdelete /opt/Citrix/ICAClient/ctxusbd.rc || die minstallunit ctxusbd.service || die minstalludevrule ctxusbd.rules 85-ctxusbd.rules || die minstalldir /usr/bin || die mlink /opt/Citrix/ICAClient/ctx_usb_isactive /usr/bin/ctx_usb_isactive || die mlink /opt/Citrix/ICAClient/ctxusb /usr/bin/ctxusb || die minstalldir /usr/sbin || die mlink /opt/Citrix/ICAClient/ctxusbd /usr/sbin/ctxusbd || die minstalltmp ctxusbd.tmpfilesd ctxusbd.conf || die fi # insert our company cert mcinjectfile ESA.pem /opt/Citrix/ICAClient/keystore/cacerts/ || die # rehash all certificates ICAROOT=${BINDIR}/opt/Citrix/ICAClient/keystore/cacerts ${BINDIR}/opt/Citrix/ICAClient/util/ctx_rehash || die } preinstall() { add_conf_prot_mask /etc/env.d } postinstall() { if [[ ${USBDAEMON} = 1 ]] then [ -d ${MROOT}/run/ctxusbd ] || install -d ${MROOT}/run/ctxusbd mstartunit ctxusbd.service fi } postremove() { # always try to stop this service mstopunit ctxusbd.service }