aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build2/cxx/compile.cxx10
1 files changed, 9 insertions, 1 deletions
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