diff options
-rw-r--r-- | compiler/incremental.nim | 10 | ||||
-rw-r--r-- | compiler/modules.nim | 2 | ||||
-rw-r--r-- | compiler/rodimpl.nim | 24 |
3 files changed, 18 insertions, 18 deletions
diff --git a/compiler/incremental.nim b/compiler/incremental.nim index 2008d35de..47637b3c1 100644 --- a/compiler/incremental.nim +++ b/compiler/incremental.nim @@ -12,7 +12,7 @@ const nimIncremental* = defined(nimIncremental) -import options, lineinfos +import options, lineinfos, pathutils when nimIncremental: import ast, msgs, intsets, btrees, db_sqlite, std / sha1 @@ -45,10 +45,10 @@ when nimIncremental: incr.r.types = initBTree[int, PType]() - proc hashFileCached*(conf: ConfigRef; fileIdx: FileIndex; fullpath: string): string = + proc hashFileCached*(conf: ConfigRef; fileIdx: FileIndex; fullpath: AbsoluteFile): string = result = msgs.getHash(conf, fileIdx) if result.len == 0: - result = $secureHashFile(fullpath) + result = $secureHashFile(string fullpath) msgs.setHash(conf, fileIdx, result) proc toDbFileId*(incr: var IncrementalCtx; conf: ConfigRef; fileIdx: FileIndex): int = @@ -57,7 +57,7 @@ when nimIncremental: let row = incr.db.getRow(sql"select id, fullhash from filenames where fullpath = ?", fullpath) let id = row[0] - let fullhash = hashFileCached(conf, fileIdx, fullpath) + let fullhash = hashFileCached(conf, fileIdx, AbsoluteFile fullpath) if id.len == 0: result = int incr.db.insertID(sql"insert into filenames(fullpath, fullhash) values (?, ?)", fullpath, fullhash) @@ -70,7 +70,7 @@ when nimIncremental: if dbId == -1: return FileIndex(-1) let fullpath = incr.db.getValue(sql"select fullpath from filenames where id = ?", dbId) doAssert fullpath.len > 0, "cannot find file name for DB ID " & $dbId - result = fileInfoIdx(conf, fullpath) + result = fileInfoIdx(conf, AbsoluteFile fullpath) proc addModuleDep*(incr: var IncrementalCtx; conf: ConfigRef; diff --git a/compiler/modules.nim b/compiler/modules.nim index 8fedba10a..75e95e453 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -66,7 +66,7 @@ proc compileModule*(graph: ModuleGraph; fileIdx: FileIndex; flags: TSymFlags): P if sfMainModule in result.flags: graph.config.mainPackageId = result.owner.id - result.id = getModuleId(graph, fileIdx, toFullPath(graph.config, fileIdx)) + result.id = getModuleId(graph, fileIdx, AbsoluteFile toFullPath(graph.config, fileIdx)) discard processModule(graph, result, if sfMainModule in flags and graph.config.projectIsStdin: stdin.llStreamOpen else: nil) elif graph.isDirty(result): diff --git a/compiler/rodimpl.nim b/compiler/rodimpl.nim index b5891fcfd..6d2a36606 100644 --- a/compiler/rodimpl.nim +++ b/compiler/rodimpl.nim @@ -34,10 +34,10 @@ proc encodeConfig(g: ModuleGraph): string = depConfigFields(serialize) -proc needsRecompile(g: ModuleGraph; fileIdx: FileIndex; fullpath: string; +proc needsRecompile(g: ModuleGraph; fileIdx: FileIndex; fullpath: AbsoluteFile; cycleCheck: var IntSet): bool = let root = db.getRow(sql"select id, fullhash from filenames where fullpath = ?", - fullpath) + fullpath.string) if root[0].len == 0: return true if root[1] != hashFileCached(g.config, fileIdx, fullpath): return true @@ -47,22 +47,22 @@ proc needsRecompile(g: ModuleGraph; fileIdx: FileIndex; fullpath: string; # check dependencies (recursively): for row in db.fastRows(sql"select fullpath from filenames where id in (select dependency from deps where module = ?)", root[0]): - let dep = row[0] + let dep = AbsoluteFile row[0] if needsRecompile(g, g.config.fileInfoIdx(dep), dep, cycleCheck): return true return false -proc getModuleId*(g: ModuleGraph; fileIdx: FileIndex; fullpath: string): int = +proc getModuleId*(g: ModuleGraph; fileIdx: FileIndex; fullpath: AbsoluteFile): int = if g.config.symbolFiles in {disabledSf, writeOnlySf} or g.incr.configChanged: return getID() let module = g.incr.db.getRow( - sql"select id, fullHash, nimid from modules where fullpath = ?", fullpath) + sql"select id, fullHash, nimid from modules where fullpath = ?", string fullpath) let currentFullhash = hashFileCached(g.config, fileIdx, fullpath) if module[0].len == 0: result = getID() db.exec(sql"insert into modules(fullpath, interfHash, fullHash, nimid) values (?, ?, ?, ?)", - fullpath, "", currentFullhash, result) + string fullpath, "", currentFullhash, result) else: result = parseInt(module[2]) if currentFullhash == module[1]: @@ -70,7 +70,7 @@ proc getModuleId*(g: ModuleGraph; fileIdx: FileIndex; fullpath: string): int = doAssert(result != 0) var cycleCheck = initIntSet() if not needsRecompile(g, fileIdx, fullpath, cycleCheck): - echo "cached successfully! ", fullpath + echo "cached successfully! ", string fullpath return -result db.exec(sql"update modules set fullHash = ? where id = ?", currentFullhash, module[0]) db.exec(sql"delete from deps where module = ?", module[0]) @@ -792,7 +792,7 @@ proc replay(g: ModuleGraph; module: PSym; n: PNode) = of "error": localError(g.config, n.info, errUser, n[1].strVal) of "compile": internalAssert g.config, n.len == 3 and n[2].kind == nkStrLit - var cf = Cfile(cname: n[1].strVal, obj: n[2].strVal, + var cf = Cfile(cname: AbsoluteFile n[1].strVal, obj: AbsoluteFile n[2].strVal, flags: {CfileFlag.External}) extccomp.addExternalFileToCompile(g.config, cf) of "link": @@ -841,7 +841,7 @@ proc replay(g: ModuleGraph; module: PSym; n: PNode) = of nkImportStmt: for x in n: internalAssert g.config, x.kind == nkStrLit - let imported = g.importModuleCallback(g, module, fileInfoIdx(g.config, n[0].strVal)) + let imported = g.importModuleCallback(g, module, fileInfoIdx(g.config, AbsoluteFile n[0].strVal)) internalAssert g.config, imported.id < 0 of nkStmtList, nkStmtListExpr: for x in n: replay(g, module, x) @@ -864,16 +864,16 @@ proc loadNode*(g: ModuleGraph; module: PSym): PNode = proc setupModuleCache*(g: ModuleGraph) = if g.config.symbolFiles == disabledSf: return g.recordStmt = recordStmt - let dbfile = getNimcacheDir(g.config) / "rodfiles.db" + let dbfile = getNimcacheDir(g.config) / RelativeFile"rodfiles.db" if g.config.symbolFiles == writeOnlySf: removeFile(dbfile) if not fileExists(dbfile): - db = open(connection=dbfile, user="nim", password="", + db = open(connection=string dbfile, user="nim", password="", database="nim") createDb(db) db.exec(sql"insert into config(config) values (?)", encodeConfig(g)) else: - db = open(connection=dbfile, user="nim", password="", + db = open(connection=string dbfile, user="nim", password="", database="nim") let oldConfig = db.getValue(sql"select config from config") g.incr.configChanged = oldConfig != encodeConfig(g) |