From 9a99dc736d814f41d2b3ceb92da2435ae2dd5632 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 8 Jul 2003 20:26:22 +0000 Subject: [PATCH] * Canonicalise paths so that Fix produces identical Nix expressions for identical inputs. --- src/fix.cc | 3 ++- src/fstate.cc | 2 +- src/store.cc | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/fix.cc b/src/fix.cc index 508a44116..b4626f71f 100644 --- a/src/fix.cc +++ b/src/fix.cc @@ -170,7 +170,8 @@ static Expr evalExpr(Expr e) if (name == "") throw badTerm("no package name specified", nf); - string out = nixStore + "/" + ((string) hash).c_str() + "-" + name; + string out = + canonPath(nixStore + "/" + ((string) hash).c_str() + "-" + name); env = ATinsert(env, ATmake("(, )", "out", out.c_str())); diff --git a/src/fstate.cc b/src/fstate.cc index 731493fd3..344197748 100644 --- a/src/fstate.cc +++ b/src/fstate.cc @@ -163,7 +163,7 @@ Hash writeTerm(ATerm t) if (!ATwriteToNamedTextFile(t, path.c_str())) throw Error(format("cannot write aterm %1%") % path); Hash hash = hashPath(path); - string path2 = nixStore + "/" + (string) hash + ".nix"; + string path2 = canonPath(nixStore + "/" + (string) hash + ".nix"); if (rename(path.c_str(), path2.c_str()) == -1) throw SysError(format("renaming %1% to %2%") % path % path2); registerPath(path2, hash); diff --git a/src/store.cc b/src/store.cc index bb945e037..095d20430 100644 --- a/src/store.cc +++ b/src/store.cc @@ -177,7 +177,7 @@ void addToStore(string srcPath, string & dstPath, Hash & hash) } string baseName = baseNameOf(srcPath); - dstPath = nixStore + "/" + (string) hash + "-" + baseName; + dstPath = canonPath(nixStore + "/" + (string) hash + "-" + baseName); copyPath(srcPath, dstPath);