--- ../lib/uring/dune	2026-10-08 19:47:50.642587523 +0300
+++ ../lib/uring/dune	2026-10-08 19:52:49.754816437 +0300
@@ -1,13 +1,12 @@
 (library
  (name uring)
  (public_name uring)
- (foreign_archives uring)
  (libraries cstruct fmt optint unix)
  (foreign_stubs
   (language c)
   (names uring_stubs)
-  (include_dirs include)
-  (extra_deps include/liburing/compat.h primitives.h)))
+  (extra_deps primitives.h))
+ (c_library_flags -luring))
 
 ; "opam install lintcstubs-arity" to update primitives.h
 (rule
@@ -25,62 +24,5 @@
 
 (rule
  (targets config.ml)
- (deps
-  include/liburing.h
-  include/liburing/io_uring.h
-  include/liburing/io_uring/bpf_filter.h
-  include/liburing/io_uring_version.h
-  include/liburing/io_uring/query.h
-  include/liburing/barrier.h
-  include/liburing/compat.h)
  (action
   (run ./include/discover.exe)))
-
-; The way the liburing header files get copied around here is pretty confusing!
-; The headers are (partly) generated by running the configure script.
-; Building the OCaml library requires these (generated) headers,
-; so they need to be the output of a dune rule.
-; The generated files are spread over a tree, but dune rules must put all
-; outputs in the same directory.
-; So, we first use a no-infer action to run configure, then copy everything
-; we need from the resulting tree (under "vendor") to this directory, flattening the structure.
-; Then, more dune rules copy those files back into the correct tree structure,
-; under "include".
-
-(rule
- (deps
-  (source_tree %{project_root}/vendor/liburing))
- (targets
-  liburing.a
-  dlluring.so
-  barrier.h
-  compat.h
-  io_uring.h
-  liburing.h
-  query.h
-  bpf_filter.h
-  io_uring_version.h)
- (action
-  (no-infer
-   (progn
-    (chdir
-     %{project_root}/vendor/liburing
-     (progn
-      (run ./configure)
-      (setenv
-       CFLAGS
-       "%{ocaml-config:ocamlc_cflags}"
-       (run make -j -C src))))
-    (copy %{project_root}/vendor/liburing/src/liburing.a liburing.a)
-    (copy %{project_root}/vendor/liburing/src/liburing.so.2.15 dlluring.so)
-    (copy %{project_root}/vendor/liburing/src/include/liburing.h liburing.h)
-    (copy %{project_root}/vendor/liburing/src/include/liburing/io_uring.h io_uring.h)
-    (copy %{project_root}/vendor/liburing/src/include/liburing/barrier.h barrier.h)
-    (copy %{project_root}/vendor/liburing/src/include/liburing/compat.h compat.h)
-    (copy %{project_root}/vendor/liburing/src/include/liburing/io_uring_version.h io_uring_version.h)
-    (copy %{project_root}/vendor/liburing/src/include/liburing/io_uring/query.h query.h)
-    (copy %{project_root}/vendor/liburing/src/include/liburing/io_uring/bpf_filter.h bpf_filter.h)))))
-
-(subdir include (copy_files ../liburing.h))
-(subdir include/liburing (copy_files ../../{io_uring,io_uring_version,barrier,compat}.h))
-(subdir include/liburing/io_uring (copy_files ../../../{query,bpf_filter}.h))
--- ../lib/uring/include/discover.ml	2026-10-08 19:54:11.622706456 +0300
+++ ../lib/uring/include/discover.ml	2026-10-08 19:55:23.134101454 +0300
@@ -1,9 +1,7 @@
 module C = Configurator.V1
 
-let include_dir = Filename.concat (Sys.getcwd ()) "include"
-
 let toplevel_defs c =
-  C.C_define.import c ~c_flags:["-D_GNU_SOURCE"; "-I"; include_dir]
+  C.C_define.import c ~c_flags:["-D_GNU_SOURCE"]
     ~includes:["fcntl.h"; "poll.h"; "sys/uio.h"; "sys/socket.h"; "limits.h"; "liburing.h"]
     C.C_define.Type.[
       "POLLIN", Int;
@@ -146,7 +144,7 @@
 let uring_defs c =
   Gen.abstract_module "Op" (
     C.C_define.import c (List.map (fun name -> name, C.C_define.Type.Int) uring_ops)
-      ~c_flags:["-D_GNU_SOURCE"; "-I"; include_dir]
+      ~c_flags:["-D_GNU_SOURCE"]
       ~includes:["liburing.h"]
     |> List.map (function
         | name, C.C_define.Value.Int v ->
@@ -158,7 +156,7 @@
   ) @
   Gen.hex_module "Ioring_setup" (
     C.C_define.import c (List.map (fun name -> name, C.C_define.Type.Int) uring_setup_flags)
-      ~c_flags:["-D_GNU_SOURCE"; "-I"; include_dir]
+      ~c_flags:["-D_GNU_SOURCE"]
       ~includes:["liburing.h"]
     |> List.map (function
         | name, C.C_define.Value.Int v ->
@@ -194,7 +192,7 @@
       in
       String.concat "" (List.map def_flag new_flags)
     in
-    C.C_define.import c ~c_flags:["-D_GNU_SOURCE"; "-I"; include_dir]
+    C.C_define.import c ~c_flags:["-D_GNU_SOURCE"]
       ~prelude:({|#include <sys/stat.h>
 #ifndef STATX_TYPE
 #include <linux/stat.h>
