From 83ea171c180e0bc0ece8f4070489c1ee10a99e5e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 12 Feb 2016 09:10:08 +0200 Subject: Use path::realize() instead of normalize() for extracted dependencies --- build2/cxx/compile.cxx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'build2') diff --git a/build2/cxx/compile.cxx b/build2/cxx/compile.cxx index db63700..e4f2e7b 100644 --- a/build2/cxx/compile.cxx +++ b/build2/cxx/compile.cxx @@ -536,10 +536,11 @@ namespace build2 } path f (move (fs)); - f.normalize (); if (!f.absolute ()) { + f.normalize (); + // This is probably as often an error as an auto-generated // file, so trace at level 4. // @@ -584,6 +585,13 @@ namespace build2 f = i->second / f; } + // We used to just normalize the path but that could result in + // an invalid path (e.g., on CentOS 7 with Clang 3.4) because + // of the symlinks. So now we realize (i.e., realpath(3)) it + // instead. + // + f.realize (); + level6 ([&]{trace << "injecting " << f;}); // Split the name into its directory part, the name part, and -- cgit v1.1