From 320a820eb43d3e4bc5a93801eb15e006f4fdd72f Mon Sep 17 00:00:00 2001 From: Ivan Yonchovski Date: Wed, 18 Jan 2023 22:38:48 +0200 Subject: [PATCH] Implicitly set noNimblePath when nimble.lock is present (#21266) Fixes https://github.com/nim-lang/nimble/issues/1004 (cherry picked from commit 7c6dcfd968867ec9b2fee5ca3ef8f251a6faa350) --- compiler/nim.nim | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/compiler/nim.nim b/compiler/nim.nim index b8256d576a..fbe6c5a564 100644 --- a/compiler/nim.nim +++ b/compiler/nim.nim @@ -37,6 +37,15 @@ when defined(profiler) or defined(memProfiler): {.hint: "Profiling support is turned on!".} import nimprof +proc nimbleLockExists(config: ConfigRef): bool = + const nimbleLock = "nimble.lock" + let pd = if not config.projectPath.isEmpty: config.projectPath else: AbsoluteDir(getCurrentDir()) + if optSkipParentConfigFiles notin config.globalOptions: + for dir in parentDirs(pd.string, fromRoot=true, inclusive=false): + if fileExists(dir / nimbleLock): + return true + return fileExists(pd.string / nimbleLock) + proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) = var p = parseopt.initOptParser(cmd) var argsCount = 0 @@ -70,6 +79,11 @@ proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) = config.arguments.len > 0 and config.cmd notin {cmdTcc, cmdNimscript, cmdCrun}: rawMessage(config, errGenerated, errArgsNeedRunOption) + if config.nimbleLockExists: + # disable nimble path if nimble.lock is present. + # see https://github.com/nim-lang/nimble/issues/1004 + disableNimblePath(config) + proc getNimRunExe(conf: ConfigRef): string = # xxx consider defining `conf.getConfigVar("nimrun.exe")` to allow users to # customize the binary to run the command with, e.g. for custom `nodejs` or `wine`.