aboutsummaryrefslogtreecommitdiff
path: root/clib
diff options
context:
space:
mode:
authorcoqbot-app[bot]2021-03-03 21:52:11 +0000
committerGitHub2021-03-03 21:52:11 +0000
commitbb4e1a76802a5440605264320ed528331ec0e2b7 (patch)
treea4ee40409c92afc6e563cac698e4ed08713cf051 /clib
parenta5bea627d1fe742229497b466ca24b470c20d269 (diff)
parentab98d847d237af3cd0e46edef42218be65cfc98f (diff)
Merge PR #12567: [build] Split stdlib to it's own package.
Reviewed-by: Zimmi48 Ack-by: JasonGross Ack-by: gares Ack-by: LasseBlaauwbroek Ack-by: silene Ack-by: vbgl
Diffstat (limited to 'clib')
-rw-r--r--clib/cPath.ml27
-rw-r--r--clib/cPath.mli31
-rw-r--r--clib/clib.mllib2
-rw-r--r--clib/dune3
4 files changed, 61 insertions, 2 deletions
diff --git a/clib/cPath.ml b/clib/cPath.ml
new file mode 100644
index 0000000000..66d03078dc
--- /dev/null
+++ b/clib/cPath.ml
@@ -0,0 +1,27 @@
+(************************************************************************)
+(* * The Coq Proof Assistant / The Coq Development Team *)
+(* v * Copyright INRIA, CNRS and contributors *)
+(* <O___,, * (see version control and CREDITS file for authors & dates) *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(* * (see LICENSE file for the text of the license) *)
+(************************************************************************)
+
+(* This API is loosely inspired by [Stdune.Path], for now we keep it
+ minimal, but at some point we may extend it, see developer notes in
+ the implementation file. *)
+
+type t = string
+
+(* Note that in general, make is not safe, due to its type, however
+ relative is as you can enforce a particular root. So we eventually
+ should remove [make] *)
+let make = List.fold_left Filename.concat ""
+
+let relative = Filename.concat
+
+let rec choose_existing = function
+ | [] -> None
+ | f :: fs ->
+ if Sys.file_exists f then Some f else choose_existing fs
diff --git a/clib/cPath.mli b/clib/cPath.mli
new file mode 100644
index 0000000000..762279a218
--- /dev/null
+++ b/clib/cPath.mli
@@ -0,0 +1,31 @@
+(************************************************************************)
+(* * The Coq Proof Assistant / The Coq Development Team *)
+(* v * Copyright INRIA, CNRS and contributors *)
+(* <O___,, * (see version control and CREDITS file for authors & dates) *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(* * (see LICENSE file for the text of the license) *)
+(************************************************************************)
+
+(* This API is loosely inspired by [Stdune.Path], for now we keep it
+ minimal, but at some point we may extend it, see developer notes in
+ the implementation file. *)
+
+(* To be made opaque one day, for now we force users to go thru the
+ constructor *)
+type t = private string
+
+(** [make path_components] build a path from its components *)
+val make : string list -> t
+
+(** [relative path string] build a path relative to an existing one *)
+val relative : t -> string -> t
+
+(** [choose_existing paths] will return [Some f] for the first file
+ [f] in [paths] that exists, [None] otherwise. *)
+val choose_existing : t list -> t option
+
+(* We should gradually add some more functions to handle common dirs
+ here such the theories directories or share files. Abstracting it
+ here does allow to use system-specific functionalities *)
diff --git a/clib/clib.mllib b/clib/clib.mllib
index be3b5971be..02f2ec8e56 100644
--- a/clib/clib.mllib
+++ b/clib/clib.mllib
@@ -37,3 +37,5 @@ Terminal
Monad
Diff2
+
+CPath
diff --git a/clib/dune b/clib/dune
index 10c75d6aa2..90f36d8bfd 100644
--- a/clib/dune
+++ b/clib/dune
@@ -1,8 +1,7 @@
(library
(name clib)
(synopsis "Coq's Utility Library [general purpose]")
- (public_name coq.clib)
+ (public_name coq-core.clib)
(wrapped false)
(modules_without_implementation cSig)
(libraries str unix threads))
-