From b8ec07f19e3fdeb2f86591c0e5f6af1a87063cf3 Mon Sep 17 00:00:00 2001 From: Timothee Cour Date: Mon, 11 May 2020 23:27:47 -0700 Subject: [PATCH] properly fixes #13758 so that `import std/macros` stays legal (#14291) * properly fix https://github.com/nim-lang/Nim/issues/12389 * use --lib:lib in koch.nim.cfg instead * third time is the charm --- compiler/nim.nim | 2 +- koch.nim | 12 +++++++++--- koch.nim.cfg | 8 +++++++- lib/pure/typetraits.nim | 3 +-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/compiler/nim.nim b/compiler/nim.nim index b48fce0b8edb..2b0d78dd4c6b 100644 --- a/compiler/nim.nim +++ b/compiler/nim.nim @@ -24,7 +24,7 @@ import idents, lineinfos, cmdlinehelper, pathutils -from browsers import openDefaultBrowser +from std/browsers import openDefaultBrowser from nodejs import findNodeJs when hasTinyCBackend: diff --git a/koch.nim b/koch.nim index 8b7eecf7cb43..3ec40534ba71 100644 --- a/koch.nim +++ b/koch.nim @@ -27,8 +27,10 @@ when defined(amd64) and defined(windows) and defined(vcc): when defined(i386) and defined(windows) and defined(vcc): {.link: "icons/koch-i386-windows-vcc.res".} -import - os, strutils, parseopt, osproc +import std/[os, strutils, parseopt, osproc] + # Using `std/os` instead of `os` to fail early if config isn't set up properly. + # If this fails with: `Error: cannot open file: std/os`, see + # https://github.com/nim-lang/Nim/pull/14291 for explanation + how to fix. import tools / kochdocs import tools / deps @@ -318,9 +320,13 @@ proc boot(args: string) = let ret = execCmdEx(nimStart & " --version") doAssert ret.exitCode == 0 let version = ret.output.splitLines[0] + # remove these when csources get updated + template addLib() = + extraOption.add " --lib:lib" # see https://github.com/nim-lang/Nim/pull/14291 if version.startsWith "Nim Compiler Version 0.19.0": extraOption.add " -d:nimBoostrapCsources0_19_0" - # remove this when csources get updated + addLib() + elif version.startsWith "Nim Compiler Version 0.20.0": addLib() # in order to use less memory, we split the build into two steps: # --compileOnly produces a $project.json file and does not run GCC/Clang. diff --git a/koch.nim.cfg b/koch.nim.cfg index 1d7acf579cce..c624b957732b 100644 --- a/koch.nim.cfg +++ b/koch.nim.cfg @@ -1 +1,7 @@ --d:booting \ No newline at end of file +-d:booting + +@if openbsd: + # because openbsd getAppFilename was broken in v0.20.0 + # workaround see https://github.com/nim-lang/Nim/pull/14291 + --lib:lib +@end diff --git a/lib/pure/typetraits.nim b/lib/pure/typetraits.nim index 0ac6d0d1ca3e..9a215a35312a 100644 --- a/lib/pure/typetraits.nim +++ b/lib/pure/typetraits.nim @@ -93,8 +93,7 @@ since (1, 1): type StaticParam*[value: static type] = object ## used to wrap a static value in `genericParams` -# NOTE: See https://github.com/nim-lang/Nim/issues/13758 - `import std/macros` does not work on OpenBSD -import macros +import std/macros macro genericParamsImpl(T: typedesc): untyped = # auxiliary macro needed, can't do it directly in `genericParams`