From e3722a922a8f15986dc8d6016a432bd6122b889f Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Fri, 24 Feb 2017 15:58:54 +0000 Subject: [PATCH] Put alias files in a dedicated directory --- src/alias.ml | 8 +++++++- src/gen_rules.ml | 3 +-- src/path.ml | 2 ++ src/path.mli | 2 ++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/alias.ml b/src/alias.ml index 1484812c..d90c133a 100644 --- a/src/alias.ml +++ b/src/alias.ml @@ -2,8 +2,14 @@ open! Import type t = Path.t +let aliases_path = Path.(relative root) "_build/.aliases" + let make name ~dir = - Path.relative dir (".jbuild-alias-" ^ name) + if not (Path.is_local dir) then + die "Aliases are only supported for local paths!\n\ + Tried to reference alias %S in %s" + name (Path.to_string dir); + Path.append aliases_path (Path.relative dir name) let dep = Build.path diff --git a/src/gen_rules.ml b/src/gen_rules.ml index 78d3c98b..a122929f 100644 --- a/src/gen_rules.ml +++ b/src/gen_rules.ml @@ -1288,8 +1288,7 @@ module Gen(P : Params) = struct |> Digest.string |> Digest.to_hex in let alias = Alias.make alias_conf.name ~dir in - let digest_path = - Path.relative dir (Path.basename (Alias.file alias) ^ "-" ^ digest) in + let digest_path = Path.extend_basename (Alias.file alias) ~suffix:("-" ^ digest) in let dummy = Build.touch digest_path in Alias.add_deps alias [digest_path]; let deps = diff --git a/src/path.ml b/src/path.ml index dd926972..35c334db 100644 --- a/src/path.ml +++ b/src/path.ml @@ -268,3 +268,5 @@ let readdir t = Sys.readdir (to_string t) |> Array.to_list let is_directory t = Sys.is_directory (to_string t) let rmdir t = Unix.rmdir (to_string t) let unlink t = Sys.remove (to_string t) + +let extend_basename t ~suffix = t ^ suffix diff --git a/src/path.mli b/src/path.mli index cda67f34..7987285b 100644 --- a/src/path.mli +++ b/src/path.mli @@ -54,6 +54,8 @@ val append : t -> t -> t val basename : t -> string val parent : t -> t +val extend_basename : t -> suffix:string -> t + val extract_build_context : t -> (string * t) option val extract_build_context_dir : t -> (t * t) option val is_in_build_dir : t -> bool