aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstroFloyd <AstroFloyd@gmail.com>2016-11-02 18:12:39 +0100
committerAstroFloyd <AstroFloyd@gmail.com>2016-11-02 18:12:39 +0100
commitd15dc1cf8398864a60d0b989628ef5777167e6b1 (patch)
treed3986b2629356aa724560e4b5d77c89b9be98305
parentAdding first version of vmware-horizon-client-bin (diff)
downloadAstroFloyd-d15dc1cf8398864a60d0b989628ef5777167e6b1.tar.gz
AstroFloyd-d15dc1cf8398864a60d0b989628ef5777167e6b1.tar.bz2
AstroFloyd-d15dc1cf8398864a60d0b989628ef5777167e6b1.zip
vmware-horizon-client-bin: installation works, program runs, but can't connect
-rw-r--r--app-emulation/vmware-horizon-client-bin/vmware-horizon-client-bin-4.2.0.ebuild65
1 files changed, 51 insertions, 14 deletions
diff --git a/app-emulation/vmware-horizon-client-bin/vmware-horizon-client-bin-4.2.0.ebuild b/app-emulation/vmware-horizon-client-bin/vmware-horizon-client-bin-4.2.0.ebuild
index 5861e41..ed1d860 100644
--- a/app-emulation/vmware-horizon-client-bin/vmware-horizon-client-bin-4.2.0.ebuild
+++ b/app-emulation/vmware-horizon-client-bin/vmware-horizon-client-bin-4.2.0.ebuild
@@ -17,24 +17,61 @@ RDEPEND=""
src_unpack() {
mkdir ${S} # No unpacking to be done, but dir must exists for src_prepare()
-}
-
-src_prepare() {
cp ${DISTDIR}/${A} ${S} # Copy the distfile to the source dir
chmod +x ${S}/${A} # Make the distdir executable
+ cd ${S}
+ ./${A} -x extract/
}
-src_compile() {
- #TERM=dumb VMWARE_EULAS_AGREED=yes \
- # ./${A} --console \
- # --set-setting vmware-horizon-usb usbEnable yes \
- # --set-setting vmware-horizon-virtual-printing tpEnable yes \
- # --set-setting vmware-horizon-smartcard smartcardEnable no\
- # --set-setting vmware-horizon-rtav rtavEnable no \
- # --set-setting vmware-horizon-tsdr tsdrEnable yes \
- # --set-setting vmware-horizon-mmr mmrEnable no || die 'Compilation (unpacking) failed'
-
- ./${A} -x extract/
+src_prepare() {
+ # Arch PKGBUILD build() function:
+
+ # 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!
+ # libudev.so.0 -> libudev.so.1
+ #
+ # 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
+
+ cd extract
+ for bundle in vmware-horizon-*; do
+ echo "Patching ${bundle}..."
+ for FILE in $(find "${bundle}" -type f); do
+ # executables and libraries only
+ file --mime "${FILE}" | egrep -q "(application/x-(executable|sharedlib)|text/x-shellscript)" || continue
+
+ # make executable
+ chmod +x "${FILE}"
+
+ # ELF executables and libraries only
+ file --mime "${FILE}" | egrep -q "application/x-(executable|sharedlib)" || continue
+
+ # link against libudev.so.1
+ sed -i -e 's/libudev.so.0/libudev.so.1/' "${FILE}"
+
+ # even openssl 1.0.[12].x has library file names ending in .so.1.0.0
+ if [ ${_USE_BUNDLED_OPENSSL:=0} -eq 0 -o "${bundle}" = 'vmware-horizon-client' ]; 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, remove the libraries provided by the package...
+ rm -f vmware-horizon-pcoip/pcoip/lib/vmware/lib{crypto,ssl}.so.1.0.2
}
src_install() {