diff --git a/Cargo.lock b/Cargo.lock
index 6f54a9380d..3f3dcbd3a4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2063,8 +2063,6 @@ dependencies = [
 [[package]]
 name = "glslopt"
 version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74a3f5c04450dfdadb4b08f6e5ee6f5110f674de1acbd6199bfec68392a8cbaf"
 dependencies = [
  "cc",
 ]
@@ -2615,8 +2613,6 @@ checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6"
 [[package]]
 name = "libdbus-sys"
 version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc12a3bc971424edbbf7edaf6e5740483444db63aa8e23d3751ff12a30f306f0"
 dependencies = [
  "pkg-config",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 09f3e7292f..674484b89c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -83,8 +83,8 @@ rlbox_lucet_sandbox = { git = "https://github.com/PLSysSec/rlbox_lucet_sandbox/"
 nix = { git = "https://github.com/shravanrn/nix/", rev="4af6c367603869a30fddb5ffb0aba2b9477ba92e" }
 spirv_cross = { git = "https://github.com/kvark/spirv_cross", branch = "wgpu5" }
 minidump_writer_linux = { git = "https://github.com/msirringhaus/minidump_writer_linux.git", rev = "85551909b95a5cf553a85dbcddfa5f117cfbbe0e" }
-
-
+libdbus-sys = { path = "third_party/rust/libdbus-sys" }
+glslopt = { path = "third_party/rust/glslopt/" }
 [patch.crates-io.cranelift-codegen]
 git = "https://github.com/bytecodealliance/wasmtime"
 rev = "824fa69756523f2b6d49029fe25de94130b1f144"
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp
index c00298a160..74b9d1aef3 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp
+++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp
@@ -2651,6 +2651,7 @@ get_type_name_for_precision_qualifier(const glsl_type *type)
    default:
       unreachable("Unsupported type");
    } /* base type */
+   return "";
 }
 
 static unsigned
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp
index 9ea8e00d31..2dee2ccdcd 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp
+++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/ir.cpp
@@ -624,6 +624,7 @@ ir_expression::get_num_operands(ir_expression_operation op)
       return 4;
 
    unreachable("Could not calculate number of operands");
+   return -1;
 }
 
 #include "ir_expression_operation_strings.h"
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp
index 9429e69c2a..8d9da42434 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp
+++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/loop_analysis.cpp
@@ -239,6 +239,7 @@ incremented_before_terminator(ir_loop *loop, ir_variable *var,
    }
 
    unreachable("Unable to find induction variable");
+   return false;
 }
 
 /**
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp
index 88318cd8a6..63a535c802 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp
+++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp
@@ -229,6 +229,7 @@ write_mask_to_swizzle(unsigned write_mask)
    case WRITEMASK_W: return SWIZZLE_W;
    }
    unreachable("not reached");
+   return 0;
 }
 
 /**
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp
index 445659599c..615ab6215a 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp
+++ b/third_party/rust/glslopt/glsl-optimizer/src/compiler/glsl_types.cpp
@@ -460,6 +460,7 @@ const glsl_type *glsl_type::get_bare_type() const
    }
 
    unreachable("Invalid base type");
+   return nullptr;
 }
 
 const glsl_type *glsl_type::get_float16_type() const
@@ -2016,6 +2017,7 @@ glsl_type::get_explicit_std140_type(bool row_major) const
       return type;
    } else {
       unreachable("Invalid type for UBO or SSBO");
+      return nullptr;
    }
 }
 
@@ -2374,6 +2376,7 @@ glsl_type::get_explicit_std430_type(bool row_major) const
       return type;
    } else {
       unreachable("Invalid type for SSBO");
+      return nullptr;
    }
 }
 
@@ -2448,6 +2451,7 @@ glsl_type::get_explicit_type_for_size_align(glsl_type_size_align_func type_info,
                                      this->matrix_columns, stride, false);
    } else {
       unreachable("Unhandled type.");
+      return nullptr;
    }
 }
 
@@ -2948,6 +2952,7 @@ glsl_get_sampler_dim_coordinate_components(enum glsl_sampler_dim dim)
       return 3;
    default:
       unreachable("Unknown sampler dim");
+      return -1;
    }
 }
 
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h b/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h
index 0d512550de..ef940cabdd 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h
+++ b/third_party/rust/glslopt/glsl-optimizer/src/mesa/main/shaderobj.h
@@ -185,6 +185,7 @@ _mesa_shader_stage_from_subroutine_uniform(GLenum subuniform)
       return MESA_SHADER_TESS_EVAL;
    }
    unreachable("not reached");
+   return MESA_SHADER_NONE;
 }
 
 static inline gl_shader_stage
@@ -205,6 +206,7 @@ _mesa_shader_stage_from_subroutine(GLenum subroutine)
       return MESA_SHADER_TESS_EVAL;
    }
    unreachable("not reached");
+   return MESA_SHADER_NONE;
 }
 
 static inline GLenum
@@ -230,6 +232,7 @@ _mesa_shader_stage_to_subroutine(gl_shader_stage stage)
       break;
    }
    unreachable("not reached");
+   return GL_VERTEX_PROGRAM_ARB;
 }
 
 static inline GLenum
@@ -253,6 +256,7 @@ _mesa_shader_stage_to_subroutine_uniform(gl_shader_stage stage)
       break;
    }
    unreachable("not reached");
+   return GL_VERTEX_PROGRAM_ARB;
 }
 
 extern bool
diff --git a/third_party/rust/glslopt/glsl-optimizer/src/util/u_thread.h b/third_party/rust/glslopt/glsl-optimizer/src/util/u_thread.h
index b91d05e4cf..eb03fdb817 100644
--- a/third_party/rust/glslopt/glsl-optimizer/src/util/u_thread.h
+++ b/third_party/rust/glslopt/glsl-optimizer/src/util/u_thread.h
@@ -78,7 +78,9 @@ static inline void u_thread_setname( const char *name )
 {
 #if defined(HAVE_PTHREAD)
 #if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS
-   pthread_setname_np(pthread_self(), name);
+   // SLE-11's glibc is too old, so it doesn't have this function.
+   // So threads have to go without a name.
+   // pthread_setname_np(pthread_self(), name);
 #elif DETECT_OS_FREEBSD || DETECT_OS_OPENBSD
    pthread_set_name_np(pthread_self(), name);
 #elif DETECT_OS_NETBSD
diff --git a/third_party/rust/libdbus-sys/build.rs b/third_party/rust/libdbus-sys/build.rs
index 463a38007e..eeb285031f 100644
--- a/third_party/rust/libdbus-sys/build.rs
+++ b/third_party/rust/libdbus-sys/build.rs
@@ -3,5 +3,5 @@ extern crate pkg_config;
 fn main() {
     // See https://github.com/joshtriplett/metadeps/issues/9 for why we don't use
     // metadeps here, but instead keep this manually in sync with Cargo.toml.
-    pkg_config::Config::new().atleast_version("1.6").probe("dbus-1").unwrap();
+    pkg_config::Config::new().atleast_version("1.1").probe("dbus-1").unwrap();
 }
diff --git a/third_party/rust/libdbus-sys/src/lib.rs b/third_party/rust/libdbus-sys/src/lib.rs
index 913a15e65b..38bb9bffbd 100644
--- a/third_party/rust/libdbus-sys/src/lib.rs
+++ b/third_party/rust/libdbus-sys/src/lib.rs
@@ -145,6 +145,11 @@ pub type DBusPendingCallNotifyFunction = Option<extern fn(pending: *mut DBusPend
 
 pub type DBusFreeFunction = Option<extern fn(memory: *mut c_void)>;
 
+pub fn dbus_validate_bus_name(busname: *const c_char, error: *mut DBusError) -> u32 { 1 }
+pub fn dbus_validate_interface(interface: *const c_char, error: *mut DBusError) -> u32 { 1 }
+pub fn dbus_validate_member(member: *const c_char, error: *mut DBusError) -> u32 { 1 }
+pub fn dbus_validate_path(path: *const c_char, error: *mut DBusError) -> u32 { 1 }
+
 #[repr(C)]
 pub struct DBusObjectPathVTable {
     pub unregister_function: Option<extern fn(conn: *mut DBusConnection, user_data: *mut c_void)>,
@@ -263,11 +268,7 @@ extern "C" {
 
     pub fn dbus_threads_init_default() -> c_int;
 
-    pub fn dbus_validate_bus_name(busname: *const c_char, error: *mut DBusError) -> u32;
     pub fn dbus_validate_error_name(errorname: *const c_char, error: *mut DBusError) -> u32;
-    pub fn dbus_validate_interface(interface: *const c_char, error: *mut DBusError) -> u32;
-    pub fn dbus_validate_member(member: *const c_char, error: *mut DBusError) -> u32;
-    pub fn dbus_validate_path(path: *const c_char, error: *mut DBusError) -> u32;
 
     pub fn dbus_watch_get_enabled(watch: *mut DBusWatch) -> u32;
     pub fn dbus_watch_get_flags(watch: *mut DBusWatch) -> c_uint;
