diff --git a/packages/ambertools/package.py b/packages/ambertools/package.py
index 87e4c39e822c3df1fa37fa081b43dfdf3e0d5f62..e4aa91175d1037fcd986cd5967ad3eeb038a27a5 100644
--- a/packages/ambertools/package.py
+++ b/packages/ambertools/package.py
@@ -19,7 +19,7 @@ class Ambertools (CMakePackage):
     depends_on("flex",                      type="build") # This is necessary for sure (experimentally tested)
     depends_on("bison",                     type="build") # This is necessary for sure (experimentally tested)
     depends_on("tcsh",                      type="build")
-    depends_on("zlib",                      type=("build", "run"))
+    depends_on("zlib",                      type=("build", "link", "run"))
     depends_on("bzip2",                     type=("build", "run"))
     depends_on("blas",                      type=("build", "run"))
     depends_on("lapack",                    type=("build", "run"))
diff --git a/packages/arbor/package.py b/packages/arbor/package.py
index e02ea5b4154be3a0c45ee4f3717a9e84ec96caca..9b0cb883f320b0c2fb75b8ff2d2446e2e6126e66 100644
--- a/packages/arbor/package.py
+++ b/packages/arbor/package.py
@@ -89,7 +89,7 @@ class Arbor(CMakePackage, CudaPackage):
         depends_on("cuda@11:", when="@0.7.1:")
 
     # mpi
-    depends_on("mpi", when="+mpi")
+    depends_on("mpi", when="+mpi", type=("build", "run"))
     depends_on("py-mpi4py", when="+mpi+python", type=("build", "run"))
 
     # python (bindings)
diff --git a/packages/libvips/package.py b/packages/libvips/package.py
index c3ae509aaab4138d01b15c20556ad1ea8fb31d25..0f7a575bc813cdcc44b9e3c5454cccaaf8dd7ba2 100644
--- a/packages/libvips/package.py
+++ b/packages/libvips/package.py
@@ -32,6 +32,8 @@ class Libvips(AutotoolsPackage):
 
     # TODO: Add more variants!
 
+    depends_on("pkgconfig", type="build")
+
     depends_on("glib")
     depends_on("expat")
 
diff --git a/packages/netlib-xblas/package.py b/packages/netlib-xblas/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..01bdb992d37b1689770a7b43c4875723c5f09d3b
--- /dev/null
+++ b/packages/netlib-xblas/package.py
@@ -0,0 +1,72 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class NetlibXblas(AutotoolsPackage):
+    """XBLAS is a reference implementation for extra precision BLAS.
+
+    XBLAS is a reference implementation for the dense and banded BLAS
+    routines, along with extended and mixed precision version. Extended
+    precision is only used internally; input and output arguments remain
+    the same as in the existing BLAS. Extra precisions is implemented as
+    double-double (i.e., 128-bit total, 106-bit significand). Mixed
+    precision permits some input/output arguments of different types
+    (mixing real and complex) or precisions (mixing single and
+    double). This implementation is proof of concept, and no attempt was
+    made to optimize performance; performance should be as good as
+    straightforward but careful code written by hand."""
+
+    homepage = "https://www.netlib.org/xblas"
+    url = "https://www.netlib.org/xblas/xblas.tar.gz"
+
+    version("1.0.248", sha256="b5fe7c71c2da1ed9bcdc5784a12c5fa9fb417577513fe8a38de5de0007f7aaa1")
+
+    variant("fortran", default=True, description="Build Fortran interfaces")
+    variant("plain_blas", default=True, description="As part of XBLAS, build plain BLAS routines")
+
+    provides("blas", when="+plain_blas")
+
+    depends_on("m4", type="build")
+
+    @property
+    def libs(self):
+        return find_libraries(["libxblas"], root=self.prefix, shared=False, recursive=True)
+
+    def configure_args(self):
+        args = []
+
+        if self.spec.satisfies("~fortran"):
+            args += ["--disable-fortran"]
+
+        if self.spec.satisfies("~plain_blas"):
+            args += ["--disable-plain-blas"]
+
+        return args
+
+    def install(self, spec, prefix):
+        mkdirp(prefix.lib)
+        install("libxblas.a", prefix.lib)
+
+        if self.spec.satisfies("+plain_blas"):
+            # XBLAS should be a drop-in BLAS replacement
+            install("libxblas.a", join_path(prefix.lib, "libblas.a"))
+
+        headers = [
+            "f2c-bridge.h",
+            "blas_dense_proto.h",
+            "blas_enum.h",
+            "blas_extended.h",
+            "blas_extended_private.h",
+            "blas_extended_proto.h",
+            "blas_fpu.h",
+            "blas_malloc.h",
+        ]
+        mkdirp(prefix.include)
+        for h in headers:
+            install(join_path("src", h), prefix.include)
+
+        return
diff --git a/packages/r-rgsl/package.py b/packages/r-rgsl/package.py
index d7796805ea3fc29606fb33805b450d4d9efb31d7..f51d0dd52232a7e87a92705be1ade9c4b68afa5d 100644
--- a/packages/r-rgsl/package.py
+++ b/packages/r-rgsl/package.py
@@ -21,3 +21,4 @@ class RRgsl(RPackage):
     # GNU Scientific Library: https://www.gnu.org/software/gsl
     # spack: https://spack.readthedocs.io/en/latest/package_list.html#gsl
     depends_on("gsl")
+    depends_on("pkgconfig")