From 13376efafc42c6eeb1bf0ad3b35f509924f1a6df Mon Sep 17 00:00:00 2001
From: Todd Gamblin <tgamblin@llnl.gov>
Date: Mon, 16 Feb 2015 21:53:34 -0800
Subject: [PATCH] Add package-specific rpath back to shiboken and pyside.

---
 var/spack/packages/py-pyside/package.py   | 13 ++++++++++---
 var/spack/packages/py-shiboken/package.py |  7 ++++++-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/var/spack/packages/py-pyside/package.py b/var/spack/packages/py-pyside/package.py
index c165d9b3bf..6583431124 100644
--- a/var/spack/packages/py-pyside/package.py
+++ b/var/spack/packages/py-pyside/package.py
@@ -1,5 +1,4 @@
 from spack import *
-import spack.package
 import os
 
 class PyPyside(Package):
@@ -9,25 +8,33 @@ class PyPyside(Package):
 
     version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d')
 
+    # TODO: make build dependency
+    # depends_on("cmake")
+
     extends('python')
     depends_on('py-setuptools')
     depends_on('qt@:4')
 
     def patch(self):
         """Undo PySide RPATH handling and add Spack RPATH."""
+        # Figure out the special RPATH
+        pypkg = self.spec['python'].package
+        rpath = self.rpath
+        rpath.append(os.path.join(self.prefix, pypkg.site_packages_dir, 'PySide'))
+
         # Add Spack's standard CMake args to the sub-builds.
         # They're called BY setup.py so we have to patch it.
         filter_file(
             r'OPTION_CMAKE,',
             r'OPTION_CMAKE, ' + (
                 '"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE", '
-                '"-DCMAKE_INSTALL_RPATH=%s",' % ':'.join(self.rpath)),
+                '"-DCMAKE_INSTALL_RPATH=%s",' % ':'.join(rpath)),
             'setup.py')
 
         # PySide tries to patch ELF files to remove RPATHs
         # Disable this and go with the one we set.
         filter_file(
-            r'rpath_cmd\(pyside_path, srcpath\)',
+            r'^\s*rpath_cmd\(pyside_path, srcpath\)',
             r'#rpath_cmd(pyside_path, srcpath)',
             'pyside_postinstall.py')
 
diff --git a/var/spack/packages/py-shiboken/package.py b/var/spack/packages/py-shiboken/package.py
index e900947939..e4bf4ce07e 100644
--- a/var/spack/packages/py-shiboken/package.py
+++ b/var/spack/packages/py-shiboken/package.py
@@ -1,4 +1,5 @@
 from spack import *
+import os
 
 class PyShiboken(Package):
     """Shiboken generates bindings for C++ libraries using CPython source code."""
@@ -19,11 +20,15 @@ def patch(self):
         """Undo Shiboken RPATH handling and add Spack RPATH."""
         # Add Spack's standard CMake args to the sub-builds.
         # They're called BY setup.py so we have to patch it.
+        pypkg = self.spec['python'].package
+        rpath = self.rpath
+        rpath.append(os.path.join(self.prefix, pypkg.site_packages_dir, 'Shiboken'))
+
         filter_file(
             r'OPTION_CMAKE,',
             r'OPTION_CMAKE, ' + (
                 '"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE", '
-                '"-DCMAKE_INSTALL_RPATH=%s",' % ':'.join(self.rpath)),
+                '"-DCMAKE_INSTALL_RPATH=%s",' % ':'.join(rpath)),
             'setup.py')
 
         # Shiboken tries to patch ELF files to remove RPATHs
-- 
GitLab