diff --git a/packages/hxtorch/package.py b/packages/hxtorch/package.py
index dc584e262ee3dbc0a005992a299fbb566936dcdb..833194e156b828a477e8d174f940c589ce7d2599 100644
--- a/packages/hxtorch/package.py
+++ b/packages/hxtorch/package.py
@@ -3,6 +3,7 @@
 #
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
 from spack import *
+import os
 
 
 class Hxtorch(WafPackage):
@@ -12,7 +13,7 @@ class Hxtorch(WafPackage):
     # This repo provides a waf binary used for the build below
     git      = "https://github.com/electronicvisions/pynn-brainscales.git"
 
-    version('2.0-rc6', branch='waf')
+    version('2.0-rc8', branch='waf')
 
     # PPU compiler dependencies
     depends_on('oppulance@2.0:')
@@ -60,33 +61,67 @@ class Hxtorch(WafPackage):
         for dep in self.spec.traverse(deptype='build'):
             query = self.spec[dep.name]
             try:
+                if dep.name in ['pthreadpool', 'fxdiv']:
+                    print('skipping {} in SPACK_INCLUDE_DIRS/CPATH/C{,_PLUS}_INCLUDE_PATH\n'.format(dep.name))
+                    for d in query.headers.directories:
+                        if os.path.exists(d):
+                            env.remove_path('SPACK_INCLUDE_DIRS', d)
+                    continue
                 include.extend(query.headers.directories)
-                print('headers:', query.headers.directories, "\n")
+                print('headers (', dep.name, '):', query.headers.directories, "\n")
             except:
                 pass
 
         library = []
         for dep in self.spec.traverse(deptype=('link', 'run')):
             query = self.spec[dep.name]
+            # we probably should skip/remove the entries for the same
+            # dependencies as above; however, ".libs" relies on the package
+            # name being the same as the library name (e.g. approx.
+            # libPACKAGE.so) so we are just moving googletest to the front
+            if dep.name == 'googletest':
+                for d in [self.spec['googletest'].prefix.lib64, self.spec['googletest'].prefix.lib]:
+                    if os.path.exists(d):
+                        print('moving to front of SPACK_{LINK,RPATH}_DIRS\n', d)
+                        env.remove_path('SPACK_LINK_DIRS', d)
+                        env.prepend_path('SPACK_LINK_DIRS', d)
+                        env.remove_path('SPACK_RPATH_DIRS', d)
+                        env.prepend_path('SPACK_RPATH_DIRS', d)
             try:
-                library.extend(query.libs.directories)
-                print('libs:', query.libs.directories, "\n")
+                print('libs (', dep.name, '):', query.libs.directories, "\n")
+                # extend at front
+                library = query.libs.directories + library
             except:
                 pass
 
         path = []
         for dep in self.spec.traverse(deptype=('build', 'link', 'run')):
+            if dep.name in ['pthreadpool', 'fxdiv']:
+                print('skipping {} for bin'.format(dep.name))
+                continue
             query = self.spec[dep.name]
             try:
                 path.append(query.prefix.bin)
-                print('bin:', query.prefix.bin, "\n")
+                print('bin (', dep.name, '):', query.prefix.bin, "\n")
             except:
                 pass
 
         # llvm might be built with ~shared_libs but still builds shared libs
         if not any('llvm' in lib for lib in library):
+            print("libs: manually adding ", self.spec['llvm'].prefix.lib)
             library.append(self.spec['llvm'].prefix.lib)
 
+        # explicitly add googletest library if it isn't found above;
+        # adding in front of the list of libraries is a hack to circumvent
+        # issues from vendoring packages like pthreadpool
+        if not any('googletest' in lib for lib in library):
+            if os.path.isdir(self.spec['googletest'].prefix.lib64):
+                print("libs: manually inserting at front ", self.spec['googletest'].prefix.lib64)
+                library.insert(0, self.spec['googletest'].prefix.lib64)
+            if os.path.isdir(self.spec['googletest'].prefix.lib):
+                print("libs: manually inserting at front ", self.spec['googletest'].prefix.lib)
+                library.insert(0, self.spec['googletest'].prefix.lib)
+
         env.set('CPATH', ':'.join(include))
         env.set('C_INCLUDE_PATH', ':'.join(include))
         env.set('CPLUS_INCLUDE_PATH', ':'.join(include))
diff --git a/packages/pynn-brainscales/package.py b/packages/pynn-brainscales/package.py
index bc16c0af0ac63be9dfe9e3a8c210f4c3a63569f6..fe994334d8b37dcce3e5e35e8494d58748081d10 100644
--- a/packages/pynn-brainscales/package.py
+++ b/packages/pynn-brainscales/package.py
@@ -11,7 +11,7 @@ class PynnBrainscales(WafPackage):
     homepage = "https://github.com/electronicvisions/pynn-brainscales"
     git      = "https://github.com/electronicvisions/pynn-brainscales.git"
 
-    version('2.0-rc6', branch='waf')
+    version('2.0-rc8', branch='waf')
 
     # PPU compiler dependencies
     depends_on('oppulance@2.0:')
@@ -84,6 +84,7 @@ class PynnBrainscales(WafPackage):
 
         # llvm might be built with ~shared_libs but still builds shared libs
         if not any('llvm' in lib for lib in library):
+            print("libs: manually adding ", self.spec['llvm'].prefix.lib)
             library.append(self.spec['llvm'].prefix.lib)
 
         env.set('CPATH', ':'.join(include))
diff --git a/spack.yaml b/spack.yaml
index e4231356d231b69d3ed06a7075f7c6f91e78ae65..02f0dcb7f194cdb83c36be3b5eba973310ef7853 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -29,8 +29,8 @@ spack:
     - py-pyaescrypt
     - py-formencode
     - tvb-framework ^binutils+ld+gold
-    - pynn-brainscales@2.0-rc6 ^log4cxx@0.10.0 ^googletest@1.11.0:+gmock
-    #- hxtorch@2.0-rc6 ^log4cxx@0.10.0 ^googletest@1.11.0:+gmock
+    - pynn-brainscales@2.0-rc8 ^log4cxx@0.10.0 ^googletest@1.11.0:+gmock
+    - hxtorch@2.0-rc8 ^log4cxx@0.10.0 ^googletest@1.11.0:+gmock
     - py-neo
     #- py-cerebstats
     #- py-cerebunit