From 8fa33d37010462e284d76d49ed5f4f94c8a17ac1 Mon Sep 17 00:00:00 2001 From: Timothee Cour Date: Sun, 10 May 2020 01:32:59 -0700 Subject: [PATCH] properly fix https://github.com/nim-lang/Nim/issues/12389 --- .builds/openbsd.yml | 2 +- build_all.sh | 3 ++- compiler/nim.nim | 2 +- koch.nim | 12 +++++++++--- lib/pure/typetraits.nim | 3 +-- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.builds/openbsd.yml b/.builds/openbsd.yml index c4db2f6216be..646e41a5363f 100644 --- a/.builds/openbsd.yml +++ b/.builds/openbsd.yml @@ -17,7 +17,7 @@ tasks: cd Nim git clone --depth 1 -q https://github.com/nim-lang/csources.git gmake -C csources -j $(sysctl -n hw.ncpuonline) - bin/nim c koch + bin/nim c --lib:lib koch # see https://github.com/nim-lang/Nim/pull/14291 echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv - test: | cd Nim diff --git a/build_all.sh b/build_all.sh index d3bba2211c48..1ac2dbddb000 100644 --- a/build_all.sh +++ b/build_all.sh @@ -45,7 +45,8 @@ build_nim_csources(){ [ -f $nim_csources ] || echo_run build_nim_csources $@ # Note: if fails, may need to `cd csources && git pull` -echo_run bin/nim c --skipUserCfg --skipParentCfg koch +# --lib:lib needed for bootstrap on some platforms, see https://github.com/nim-lang/Nim/pull/14291 +echo_run bin/nim c --skipUserCfg --skipParentCfg --lib:lib koch echo_run ./koch boot -d:release --skipUserCfg --skipParentCfg echo_run ./koch tools --skipUserCfg --skipParentCfg # Compile Nimble and other tools. 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/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`