summary refs log tree commit diff stats
path: root/tools/ci_generate.nim
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2021-04-30 13:27:53 -0700
committerGitHub <noreply@github.com>2021-04-30 22:27:53 +0200
commitd0485e326ab56af367246227dedc088839678b6b (patch)
tree3597396dad97e3f9ea8bfc971beec8258369e9ab /tools/ci_generate.nim
parentd32ab61e61a9c8875cda926fb76e12dc8e8b9a23 (diff)
downloadNim-d0485e326ab56af367246227dedc088839678b6b.tar.gz
bring back std/ prefix within compiler and ensure it works in bootstrap + bsd (#17902)
* [WIP] bring back std/ prefix within compiler and ensure it works in bootstrap + bsd

* refs https://github.com/nim-lang/Nim/pull/16282#discussion_r616846863
* sounds very similar to https://github.com/nim-lang/Nim/pull/14291
* more: vmops
* update tools/ci_generate.nim
* auto-generate freebsd.yml as well, to avoid duplication with openbsd.yml
* cleanup
* undo temporary CI removal
Diffstat (limited to 'tools/ci_generate.nim')
-rw-r--r--tools/ci_generate.nim54
1 files changed, 36 insertions, 18 deletions
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()