# Maintainer: Christian Hesse pkgbase=vmware-horizon-client pkgname=('vmware-horizon-client' 'vmware-horizon-rtav' 'vmware-horizon-smartcard' 'vmware-horizon-usb' 'vmware-horizon-virtual-printing' 'vmware-horizon-tsdr' 'vmware-horizon-mmr') # https://download3.vmware.com/software/view/viewclients/CART19FQ2/VMware-Horizon-Client-4.8.0-8518891.x64.bundle pkgver=4.8.0 _build=8518891 _cart='CART19FQ2' pkgrel=1 pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop' arch=('x86_64') url='https://www.vmware.com/go/viewclients' license=('custom') makedepends=('libxslt') source=("${pkgbase}-${pkgver}-${_build}-x86_64.bundle::https://download3.vmware.com/software/view/viewclients/${_cart}/VMware-Horizon-Client-${pkgver}-${_build}.x64.bundle" 'http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/eclass/vmware-bundle.eclass' 'vmware-horizon-usb' 'vmware-horizon-usb.service' 'vmware-horizon-virtual-printing.service') sha256sums=('40a3a5a194b3185fb129c30d8f2319868af28b4bf91f22da684e02e742aaaea8' 'd8794c22229afdeb698dae5908b7b2b3880e075b19be38e0b296bb28f4555163' '008b60ebf45f7d1e033c8ad8ce1688d5e1c59fc0668493067fb89b563b1dc00f' 'f0944ca74a44292e7f853792335d3bbd1a89a1d4964d6d74a7e9485a8b068b0b' 'e47e770a1e19ed321de7c2765b2d682f59ac466aef92b2e4ea5e65cacf56de36') # VMware bundles old versions of openssl. Usually we can use system openssl. # If things break because VMware relies on legacy or buggy code you can use # bundled openssl. _USE_BUNDLED_OPENSSL=1 # We need these functions for the Gentoo eclass... ebegin() { echo -n "Begin ${1}: " } eend() { echo 'done' } prepare() { # We need this variable for the Gentoo eclass... export T="${srcdir}" source "${srcdir}/vmware-bundle.eclass" for bundle in "${pkgname[@]}" vmware-horizon-pcoip; do vmware-bundle_extract-bundle-component "${srcdir}/${pkgbase}-${pkgver}-${_build}-${CARCH}.bundle" "${bundle}" "${srcdir}/extract/${bundle}" done } build() { cd "${srcdir}/extract/" # This is a dirty hack, but it works. # Change dynamic section in ELF files to fix dynamic linking. # Make sure the length is not changed! # # for system openssl: # libssl.so.1.0.[12] -> libssl.so.1.0.0 # libcrypto.so.1.0.[12] -> libcrypto.so.1.0.0 # # for bundled openssl - we use uncommon name to make sure no other application will care: # libssl.so.1.0.[12] -> libssl-vmw.so.0 # libcrypto.so.1.0.[12] -> libcrypto-vmw.so.0 for bundle in "${pkgname[@]}" vmware-horizon-pcoip; do for FILE in $(find "${bundle}" -type f); do # executables and libraries only file --mime "${FILE}" | egrep -q "(application/x-(pie-)?(executable|sharedlib)|text/x-shellscript)" || continue # make executable chmod +x "${FILE}" # ELF executables and libraries only file --mime "${FILE}" | egrep -q "application/x-(pie-)?(executable|sharedlib)" || continue # even openssl 1.0.[12].x has library file names ending in .so.1.0.0 if [ ${_USE_BUNDLED_OPENSSL:=0} -eq 0 ]; then sed -i -e 's/libssl.so.1.0.[12]/libssl.so.1.0.0/' \ -e 's/libcrypto.so.1.0.[12]/libcrypto.so.1.0.0/' \ "${FILE}" else # Some files link against openssl... # Use the bundled version there. sed -i -e 's/libssl.so.1.0.[012]/libssl-vmw.so.0/' \ -e 's/libcrypto.so.1.0.[012]/libcrypto-vmw.so.0/' \ "${FILE}" fi done done # now that we fixed dynamic linking... # ... let's finish the hack if [ ${_USE_BUNDLED_OPENSSL:=0} -eq 0 ]; then rm -f "${srcdir}"/extract/vmware-horizon-pcoip/pcoip/lib/vmware/lib{crypto,ssl}.so.1.0.2 ln -sf ../libcrypto.so.1.0.0 "${srcdir}"/extract/vmware-horizon-pcoip/pcoip/lib/vmware/libcrypto.so.1.0.0 ln -sf ../libssl.so.1.0.0 "${srcdir}"/extract/vmware-horizon-pcoip/pcoip/lib/vmware/libssl.so.1.0.0 else rename -- '.so.1.0.2' '-vmw.so.0' \ "${srcdir}"/extract/vmware-horizon-pcoip/pcoip/lib/vmware/lib{crypto,ssl}.so.1.0.2 fi sed -i '/Name=/a Comment=Connect to VMware Horizon View virtual machines' \ "${srcdir}"/extract/vmware-horizon-client/share/applications/vmware-view.desktop } package_vmware-horizon-client() { conflicts=('vmware-view-open-client' 'vmware-view-open-client-beta' 'vmware-view-client' 'vmware-horizon-pcoip') replaces=('vmware-horizon-pcoip') depends=('gnome-icon-theme' 'gtk2' 'libpng12' 'libudev0-shim' 'libxml2' 'libxss' 'libxtst' 'openssl' 'binutils' 'glib2' 'expat') optdepends=('alsa-lib: audio support via alsa' 'freerdp: RDP remote desktop connections' 'libpulse: audio support via pulse sound server' 'rdesktop: RDP remote desktop connections' 'vmware-horizon-rtav: Real-Time Audio-Video (webcam and audio-in)' 'vmware-horizon-smartcard: smartcard authentication' 'vmware-horizon-usb: USB device redirection' 'vmware-horizon-virtual-printing: virtual printing' 'vmware-horizon-tsdr: folder sharing' 'vmware-horizon-mmr: multimedia redirection') install=vmware-horizon-client.install cd "${srcdir}/extract/vmware-horizon-client/" mkdir -p "${pkgdir}/usr/" cp -a bin/ "${pkgdir}/usr/" cp -a lib/ "${pkgdir}/usr/" cp -a share/ "${pkgdir}/usr/" mkdir -p "${pkgdir}/usr/share/doc/" cp -a doc/ "${pkgdir}/usr/share/doc/vmware-horizon-client" cp -a debug/ "${pkgdir}/usr/share/doc/vmware-horizon-client/" cd "${srcdir}/extract/vmware-horizon-pcoip/" mkdir -p "${pkgdir}/usr/" cp -a pcoip/lib/ "${pkgdir}/usr/" cp -a pcoip/bin/ "${pkgdir}/usr/" } package_vmware-horizon-rtav() { pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop - Real-Time Audio-Video (webcam and audio-in)' depends=('vmware-horizon-client' 'gcc-libs' 'libutil-linux' 'zlib' 'glib2') cd "${srcdir}/extract/vmware-horizon-rtav/" mkdir -p "${pkgdir}/usr/" cp -a lib/ "${pkgdir}/usr/" } package_vmware-horizon-smartcard() { pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop - smartcard authentication' depends=('vmware-horizon-client' 'pcsclite' 'glib2') cd "${srcdir}/extract/vmware-horizon-smartcard/" mkdir -p "${pkgdir}/usr/" cp -a lib/ "${pkgdir}/usr/" } package_vmware-horizon-usb() { pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop - USB device redirection' depends=('vmware-horizon-client' 'glib2') install=vmware-horizon-usb.install cd "${srcdir}/extract/vmware-horizon-usb/" mkdir -p "${pkgdir}/usr/lib/vmware/view/" cp -a bin/ "${pkgdir}/usr/lib/vmware/view/usb" cp -a lib/ "${pkgdir}/usr/" install -D -m0755 "${srcdir}/vmware-horizon-usb" "${pkgdir}/usr/lib/systemd/scripts/vmware-horizon-usb" install -D -m0644 "${srcdir}/vmware-horizon-usb.service" "${pkgdir}/usr/lib/systemd/system/vmware-horizon-usb.service" } package_vmware-horizon-virtual-printing() { pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop - virtual printing' depends=('vmware-horizon-client' 'openssl098' 'libcups' 'zlib') install=vmware-horizon-virtual-printing.install cd "${srcdir}/extract/vmware-horizon-virtual-printing/" mkdir -p "${pkgdir}/usr/bin/" case ${CARCH} in x86_64) cp -a bin/x86_64-linux-NOSSL/thnu* "${pkgdir}/usr/bin/" install -D -m0755 bin/x86_64-linux-NOSSL/.thnumod "${pkgdir}/etc/thnuclnt/.thnumod" ;; i686) cp -a bin/i586-linux-NOSSL/thnu* "${pkgdir}/usr/bin/" install -D -m0755 bin/i586-linux-NOSSL/.thnumod "${pkgdir}/etc/thnuclnt/.thnumod" ;; esac install -D -m0755 lib/tprdp.so "${pkgdir}/usr/lib/vmware/rdpvcbridge/tprdp.so" install -D -m0644 bin/conf/thnuclnt.convs "${pkgdir}/usr/share/cups/mime/thnuclnt.convs" install -D -m0644 bin/conf/thnuclnt.types "${pkgdir}/usr/share/cups/mime/thnuclnt.types" install -D -m0644 "${srcdir}/vmware-horizon-virtual-printing.service" \ "${pkgdir}/usr/lib/systemd/system/vmware-horizon-virtual-printing.service" } package_vmware-horizon-tsdr() { pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop - folder sharing' depends=('vmware-horizon-client' 'glibmm' 'glib2') cd "${srcdir}/extract/vmware-horizon-tsdr/" mkdir -p "${pkgdir}/usr/" cp -a lib/ "${pkgdir}/usr/" } package_vmware-horizon-mmr() { pkgdesc='VMware Horizon Client connect to VMware Horizon virtual desktop - multimedia redirection' depends=('vmware-horizon-client' 'gstreamer0.10-base' 'libpulse' 'libxml2' 'glib2') cd "${srcdir}/extract/vmware-horizon-mmr/" mkdir -p "${pkgdir}/usr/" cp -a lib/ "${pkgdir}/usr/" }