public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Fabio Rossi" <rossi.f@inwind.net>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/vmware:master commit in: app-emulation/vmware-workstation/
Date: Sun,  3 Apr 2016 13:23:03 +0000 (UTC)	[thread overview]
Message-ID: <1459684087.050003bb7077b9121a81452e28779c343d1f0004.fabio@gentoo> (raw)

commit:     050003bb7077b9121a81452e28779c343d1f0004
Author:     Fabio Rossi <rossi.f <AT> inwind <DOT> it>
AuthorDate: Sun Apr  3 11:37:09 2016 +0000
Commit:     Fabio Rossi <rossi.f <AT> inwind <DOT> net>
CommitDate: Sun Apr  3 11:48:07 2016 +0000
URL:        https://gitweb.gentoo.org/proj/vmware.git/commit/?id=050003bb

app-emulation/vmware-workstation: other workarounds for bundled-libs

Commit 052215b3c1e4b532b9d7a7872a0f46ecdb10f4cb has drastically reduced the
amount of not needed deps... introducing other problems.

1) The removal of gnome-base/librsvg exposes a problem with
libconf/lib/gtk-2.0/2.10.0/loaders/svg_loader.so (only with
bundled-libs), which is not able to find the bundled librsvg-2.so.2.

2) Some binaries (bin/vmware-vmx*) depends on libXinerama.so.1 and libXcursor.so.1
but with bundled-libs they are not able to find the embedded version and
fail if those libs are not installed in the system. patchelf --set-rpath doesn't work
with bin/vmware-vmw-debug so I moved the deps on libXinerama and libXcursor
to be always set.

Moreover, with gcc-5, bundled-libs is mandatory otherwise there is a problem
with symbols (https://bugs.gentoo.org/show_bug.cgi?id=578070#c8). Even
with VMWARE_USE_SHIPPED_LIBS set, appLoader tries to dynamically load at
runtime the best version of glib and fontconfig leading to a mix of
system/bundled libs. Let's fix some rpath to be sure that with
bundled-libs only the libs embedded with vmware are used!

Tested both on amd64 and ~amd64 systems.

 .../vmware-workstation-12.1.0.3272444-r2.ebuild    | 91 ++++++++++++++--------
 1 file changed, 58 insertions(+), 33 deletions(-)

diff --git a/app-emulation/vmware-workstation/vmware-workstation-12.1.0.3272444-r2.ebuild b/app-emulation/vmware-workstation/vmware-workstation-12.1.0.3272444-r2.ebuild
index 96a7061..110bce2 100644
--- a/app-emulation/vmware-workstation/vmware-workstation-12.1.0.3272444-r2.ebuild
+++ b/app-emulation/vmware-workstation/vmware-workstation-12.1.0.3272444-r2.ebuild
@@ -111,10 +111,8 @@ BUNDLED_LIB_DEPENDS="
 	x11-libs/gtk+:2
 	x11-libs/libXau
 	x11-libs/libXcomposite
-	x11-libs/libXcursor
 	x11-libs/libXdamage
 	x11-libs/libXfixes
-	x11-libs/libXinerama
 	x11-libs/libXrandr
 	x11-libs/libXrender
 	x11-libs/pango
@@ -127,8 +125,10 @@ RDEPEND="
 	media-libs/alsa-lib
 	net-print/cups
 	x11-libs/libX11
+	x11-libs/libXcursor
 	x11-libs/libXext
 	x11-libs/libXi
+	x11-libs/libXinerama
 	x11-libs/libXtst
 	x11-libs/startup-notification
 	x11-themes/hicolor-icon-theme
@@ -186,35 +186,62 @@ src_unpack() {
 }
 
 clean_bundled_libs() {
-	einfo "Removing bundled libraries"
-	for libname in ${BUNDLED_LIBS} ; do
-		rm -rv "${S}"/lib/lib/${libname} || die "Failed removing bundled ${libname}"
-	done
+	if ! use bundled-libs ; then
+		einfo "Removing bundled libraries"
+		for libname in ${BUNDLED_LIBS} ; do
+			rm -rv "${S}"/lib/lib/${libname} || die "Failed removing bundled ${libname}"
+		done
 
-	rm -rv "${S}"/lib/libconf || die "Failed removing bundled gtk conf libs"
-
-	# Among the bundled libs there are libcrypto.so.1.0.1 and libssl.so.1.0.1
-	# (needed by libcds.so) which seem to be compiled from openssl-1.0.1h.
-	# Upstream real sonames are *so.1.0.0 so it's necessary to fix DT_NEEDED link
-	# in libcds.so to be able to use system libs.
-	pushd >/dev/null .
-	einfo "Patching libcds.so"
-	cd "${S}"/lib/lib/libcds.so || die
-	patchelf --replace-needed libssl.so.1.0.{1,0} \
-	         --replace-needed libcrypto.so.1.0.{1,0} \
-	         libcds.so || die
-	popd >/dev/null
-
-	# vmware-workstation seems to use a custom version of libgksu2.so, for this reason
-	# we leave the bundled version. The libvmware-gksu.so library declares simply DT_NEEDED
-	# libgksu2.so.0 but it uses at runtime the bundled version, patch the lib to avoid portage
-	# preserve-libs mechanism to be triggered when a system lib is available (but not required)
-	pushd >/dev/null .
-	einfo "Patching libvmware-gksu.so"
-	cd "${S}"/lib/lib/libvmware-gksu.so || die
-	patchelf --set-rpath "\$ORIGIN/../libgksu2.so.0" \
-	         libvmware-gksu.so || die
-	popd >/dev/null
+		rm -rv "${S}"/lib/libconf || die "Failed removing bundled gtk conf libs"
+
+		# Among the bundled libs there are libcrypto.so.1.0.1 and libssl.so.1.0.1
+		# (needed by libcds.so) which seem to be compiled from openssl-1.0.1h.
+		# Upstream real sonames are *so.1.0.0 so it's necessary to fix DT_NEEDED link
+		# in libcds.so to be able to use system libs.
+		pushd >/dev/null .
+		einfo "Patching libcds.so"
+		cd "${S}"/lib/lib/libcds.so || die
+		patchelf --replace-needed libssl.so.1.0.{1,0} \
+				 --replace-needed libcrypto.so.1.0.{1,0} \
+				 libcds.so || die
+		popd >/dev/null
+
+		# vmware-workstation seems to use a custom version of libgksu2.so, for this reason
+		# we leave the bundled version. The libvmware-gksu.so library declares simply DT_NEEDED
+		# libgksu2.so.0 but it uses at runtime the bundled version, patch the lib to avoid portage
+		# preserve-libs mechanism to be triggered when a system lib is available (but not required)
+		pushd >/dev/null .
+		einfo "Patching libvmware-gksu.so"
+		cd "${S}"/lib/lib/libvmware-gksu.so || die
+		patchelf --set-rpath "\$ORIGIN/../libgksu2.so.0" \
+				 libvmware-gksu.so || die
+		popd >/dev/null
+	else
+		# if librsvg is not installed in the system then vmware doesn't start
+		pushd >/dev/null .
+		einfo "Patching svg_loader.so"
+		cd "${S}"/lib/libconf/lib/gtk-2.0/2.10.0/loaders || die
+		patchelf --set-rpath "\$ORIGIN/../../../../../lib/librsvg-2.so.2" \
+				 svg_loader.so || die
+		popd >/dev/null
+
+		# vmware, even with VMWARE_USE_SHIPPED_LIBS set, uses the system lib
+		# for glib and fontconfig when a newer version is found. Let's force to use
+		# always the bundled versions to avoid a mix of system and bundled libs ...
+		pushd >/dev/null .
+		einfo "Patching appLoader"
+		cd "${S}"/lib/bin || die
+		patchelf --set-rpath "\$ORIGIN/../lib/libglib-2.0.so.0:\$ORIGIN/../lib/libfontconfig.so.1" \
+				 appLoader || die
+		popd >/dev/null
+		# ... this depends on previous appLoader patching, probably it is not mandatory but cleans the log
+		pushd >/dev/null .
+		einfo "Patching libfontconfig.so.1"
+		cd "${S}"/lib/lib/libfontconfig.so.1 || die
+		patchelf --set-rpath "\$ORIGIN/../libexpat.so.0" \
+				 libfontconfig.so.1 || die
+		popd >/dev/null
+	fi
 }
 
 src_prepare() {
@@ -227,9 +254,7 @@ src_prepare() {
 		rm -f vmware-workstation-server/bin/{openssl,configure-hostd.sh}
 	fi
 
-	if ! use bundled-libs ; then
-		clean_bundled_libs
-	fi
+	clean_bundled_libs
 
 	DOC_CONTENTS="
 /etc/env.d is updated during ${PN} installation. Please run:\n


             reply	other threads:[~2016-04-03 13:23 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-03 13:23 Fabio Rossi [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-04-26 22:00 [gentoo-commits] proj/vmware:master commit in: app-emulation/vmware-workstation/ Fabio Rossi
2016-03-20 18:43 Andreas Hüttel
2016-03-20 18:43 Andreas Hüttel
2016-03-20 18:06 Andreas Hüttel
2016-03-19 21:06 Andreas Hüttel
2016-03-19 17:36 Andreas Hüttel
2016-03-19 17:23 Andreas Hüttel
2016-01-09 22:47 Andreas Hüttel
2015-11-14 21:48 Andreas Hüttel
2015-11-14 21:48 Andreas Hüttel
2015-11-14 21:48 Andreas Hüttel
2015-11-14 21:48 Andreas Hüttel
2015-11-14 21:24 Andreas Hüttel
2015-10-10 20:30 Andreas Hüttel
2015-09-26 21:26 Andreas Hüttel
2015-09-22 22:01 Andreas Hüttel
2015-09-12 20:05 Andreas Hüttel
2015-09-12 20:05 Andreas Hüttel
2015-09-12 18:17 Andreas Hüttel
2015-09-08 20:05 Andreas Hüttel
2015-09-08 20:03 Andreas Hüttel
2015-07-11  4:21 Evan Teran
2015-05-10 11:48 Andreas Hüttel
2015-05-09 23:58 Andreas Hüttel
2013-06-22 22:45 Andreas Hüttel
2012-09-15 12:54 Vadim Kuznetsov
2012-09-15 12:28 Vadim Kuznetsov
2012-06-17  0:17 Vadim Kuznetsov
2012-06-16 14:52 Vadim Kuznetsov
2012-06-15  3:49 Matt Whitlock

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1459684087.050003bb7077b9121a81452e28779c343d1f0004.fabio@gentoo \
    --to=rossi.f@inwind.net \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox