summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--.builds/freebsd.yml8
-rw-r--r--.builds/openbsd_0.yml7
-rw-r--r--.builds/openbsd_1.yml7
-rw-r--r--compiler/ic/dce.nim2
-rw-r--r--compiler/vmops.nim16
-rw-r--r--koch.nim4
-rw-r--r--tools/ci_generate.nim54
7 files changed, 65 insertions, 33 deletions
diff --git a/.builds/freebsd.yml b/.builds/freebsd.yml
index c1fb80253..8f336771a 100644
--- a/.builds/freebsd.yml
+++ b/.builds/freebsd.yml
@@ -1,3 +1,5 @@
+## DO NO EDIT DIRECTLY! auto-generated by `nim r tools/ci_generate.nim`
+
 # see https://man.sr.ht/builds.sr.ht/compatibility.md#freebsd
 image: freebsd/latest
 packages:
@@ -8,9 +10,12 @@ packages:
 - devel/sfml
 - www/node
 - devel/gmake
+
+
 sources:
 - https://github.com/nim-lang/Nim
 environment:
+  NIM_TESTAMENT_BATCH: "0_1"
   CC: /usr/bin/clang
 tasks:
 - setup: |
@@ -20,9 +25,10 @@ tasks:
     $nim_csources c --skipUserCfg --skipParentCfg koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
 - test: |
+    set -e
     cd Nim
     if ! ./koch runCI; then
-      nim c -r tools/ci_testresults.nim
+      nim r tools/ci_testresults.nim
       exit 1
     fi
 triggers:
diff --git a/.builds/openbsd_0.yml b/.builds/openbsd_0.yml
index e1d85d2a7..c19cd63c6 100644
--- a/.builds/openbsd_0.yml
+++ b/.builds/openbsd_0.yml
@@ -1,4 +1,4 @@
-## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
+## DO NO EDIT DIRECTLY! auto-generated by `nim r tools/ci_generate.nim`
 
 image: openbsd/latest
 packages:
@@ -10,6 +10,8 @@ packages:
 - sfml
 - sdl2
 - libffi
+
+
 sources:
 - https://github.com/nim-lang/Nim
 environment:
@@ -20,9 +22,10 @@ tasks:
     set -e
     cd Nim
     . ci/funs.sh && nimBuildCsourcesIfNeeded
-    $nim_csources c koch
+    $nim_csources c --skipUserCfg --skipParentCfg koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
 - test: |
+    set -e
     cd Nim
     if ! ./koch runCI; then
       nim r tools/ci_testresults.nim
diff --git a/.builds/openbsd_1.yml b/.builds/openbsd_1.yml
index ed2ded056..06f5f2ae5 100644
--- a/.builds/openbsd_1.yml
+++ b/.builds/openbsd_1.yml
@@ -1,4 +1,4 @@
-## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
+## DO NO EDIT DIRECTLY! auto-generated by `nim r tools/ci_generate.nim`
 
 image: openbsd/latest
 packages:
@@ -10,6 +10,8 @@ packages:
 - sfml
 - sdl2
 - libffi
+
+
 sources:
 - https://github.com/nim-lang/Nim
 environment:
@@ -20,9 +22,10 @@ tasks:
     set -e
     cd Nim
     . ci/funs.sh && nimBuildCsourcesIfNeeded
-    $nim_csources c koch
+    $nim_csources c --skipUserCfg --skipParentCfg koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
 - test: |
+    set -e
     cd Nim
     if ! ./koch runCI; then
       nim r tools/ci_testresults.nim
diff --git a/compiler/ic/dce.nim b/compiler/ic/dce.nim
index 350b17d1b..0a436a5d1 100644
--- a/compiler/ic/dce.nim
+++ b/compiler/ic/dce.nim
@@ -9,7 +9,7 @@
 
 ## Dead code elimination (=DCE) for IC.
 
-import intsets, tables
+import std/[intsets, tables]
 import ".." / [ast, options, lineinfos, types]
 
 import packed_ast, ic, bitabs
diff --git a/compiler/vmops.nim b/compiler/vmops.nim
index 1d22750e7..04356fc76 100644
--- a/compiler/vmops.nim
+++ b/compiler/vmops.nim
@@ -9,24 +9,24 @@
 
 # Unfortunately this cannot be a module yet:
 #import vmdeps, vm
-from math import sqrt, ln, log10, log2, exp, round, arccos, arcsin,
+from std/math import sqrt, ln, log10, log2, exp, round, arccos, arcsin,
   arctan, arctan2, cos, cosh, hypot, sinh, sin, tan, tanh, pow, trunc,
   floor, ceil, `mod`, cbrt, arcsinh, arccosh, arctanh, erf, erfc, gamma,
   lgamma
 
 when declared(math.copySign):
-  from math import copySign
+  from std/math import copySign
 
 when declared(math.signbit):
-  from math import signbit
+  from std/math import signbit
 
-from os import getEnv, existsEnv, dirExists, fileExists, putEnv, walkDir,
+from std/os import getEnv, existsEnv, dirExists, fileExists, putEnv, walkDir,
                    getAppFilename, raiseOSError, osLastError
 
-from md5 import getMD5
-from times import cpuTime
-from hashes import hash
-from osproc import nil
+from std/md5 import getMD5
+from std/times import cpuTime
+from std/hashes import hash
+from std/osproc import nil
 
 from sighashes import symBodyDigest
 
diff --git a/koch.nim b/koch.nim
index 12f9e1c14..15355ec36 100644
--- a/koch.nim
+++ b/koch.nim
@@ -534,7 +534,9 @@ proc runCI(cmd: string) =
   echo "runCI: ", cmd
   echo hostInfo()
   # boot without -d:nimHasLibFFI to make sure this still works
-  kochExecFold("Boot in release mode", "boot -d:release -d:nimStrictMode")
+  # `--lib:lib` is needed for bootstrap on openbsd, for reasons described in
+  # https://github.com/nim-lang/Nim/pull/14291 (`getAppFilename` bugsfor older nim on openbsd).
+  kochExecFold("Boot in release mode", "boot -d:release -d:nimStrictMode --lib:lib")
 
   when false: # debugging: when you need to run only 1 test in CI, use something like this:
     execFold("debugging test", "nim r tests/stdlib/tosproc.nim")
diff --git a/tools/ci_generate.nim b/tools/ci_generate.nim
index e2580ff6b..6517df34a 100644
--- a/tools/ci_generate.nim
+++ b/tools/ci_generate.nim
@@ -1,6 +1,6 @@
 ##[
 avoid code duplication in CI pipelines.
-For now, this is only used for openbsd, but there is a lot of other code
+For now, this is only used for openbsd + freebsd, but there is a lot of other code
 duplication that could be removed.
 
 ## usage
@@ -10,22 +10,14 @@ nim r tools/ci_generate.nim
 ```
 ]##
 
-import std/strformat
+import std/[strformat, os]
 
-proc genCIopenbsd(batch: int, num: int): string =
+proc genCiBsd(header: string, batch: int, num: int): string =
   result = fmt"""
-## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
+## DO NO EDIT DIRECTLY! auto-generated by `nim r tools/ci_generate.nim`
+
+{header}
 
-image: openbsd/latest
-packages:
-- gmake
-- sqlite3
-- node
-- boehm-gc
-- pcre
-- sfml
-- sdl2
-- libffi
 sources:
 - https://github.com/nim-lang/Nim
 environment:
@@ -36,9 +28,10 @@ tasks:
     set -e
     cd Nim
     . ci/funs.sh && nimBuildCsourcesIfNeeded
-    $nim_csources c koch
+    $nim_csources c --skipUserCfg --skipParentCfg koch
     echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
 - test: |
+    set -e
     cd Nim
     if ! ./koch runCI; then
       nim r tools/ci_testresults.nim
@@ -51,14 +44,39 @@ triggers:
 """
 
 proc main()=
+  let dir = ".builds"
   # not too large to be resource friendly, refs bug #17107
   let num = 2
     # if you reduce this, make sure to remove files that shouldn't be generated,
     # or better, do the cleanup logic here e.g.: `rm .builds/openbsd_*`
+  let headerFreebsd = """
+# see https://man.sr.ht/builds.sr.ht/compatibility.md#freebsd
+image: freebsd/latest
+packages:
+- databases/sqlite3
+- devel/boehm-gc-threaded
+- devel/pcre
+- devel/sdl20
+- devel/sfml
+- www/node
+- devel/gmake
+"""
+
+  let headerOpenbsd = """
+image: openbsd/latest
+packages:
+- gmake
+- sqlite3
+- node
+- boehm-gc
+- pcre
+- sfml
+- sdl2
+- libffi
+"""
   for i in 0..<num:
-    let file = fmt".builds/openbsd_{i}.yml"
-    let code = genCIopenbsd(i, num)
-    writeFile(file, code)
+    writeFile(dir / fmt"openbsd_{i}.yml", genCiBsd(headerOpenbsd, i, num))
+  writeFile(dir / "freebsd.yml", genCiBsd(headerFreebsd, 0, 1))
 
 when isMainModule:
   main()