Sped up path manipulation, down to 9.2s
authorDavid Cock <david.cock@inf.ethz.ch>
Wed, 19 Aug 2015 14:17:01 +0000 (16:17 +0200)
committerDavid Cock <david.cock@inf.ethz.ch>
Wed, 19 Aug 2015 14:17:01 +0000 (16:17 +0200)
Signed-off-by: David Cock <david.cock@inf.ethz.ch>

hake/Main.hs

index 01a2dcf..bb6d9c8 100644 (file)
@@ -439,12 +439,13 @@ treePath o InstallTree arch path hakepath =
 ---   hd:   Directory containing the Hakefile
 ---   
 relPath treeroot path hakepath =
-    treeroot </> makeRelative "/" (hakepath </> path)
-{--
-    let af = Path.relToFile path hakepath
-        rf = Path.makeRel $ Path.relToDir af "/" 
-    in Path.relToDir rf treeroot
---}
+    treeroot </> stripSlash (hakepath </> path)
+
+-- Strip any leading slash from the filename.  This is much faster than
+-- 'makeRelative "/"'
+stripSlash :: FilePath -> FilePath
+stripSlash ('/':cs) = cs
+stripSlash cs = cs
 
 makeHakeDeps :: Handle -> Opts -> [String] -> IO ()
 makeHakeDeps h o l = do