summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci_docs.yml4
-rw-r--r--.gitignore2
-rw-r--r--changelog.md3
-rw-r--r--compiler/installer.ini1
-rw-r--r--koch.nim21
-rw-r--r--tools/kochdocs.nim2
6 files changed, 13 insertions, 20 deletions
diff --git a/.github/workflows/ci_docs.yml b/.github/workflows/ci_docs.yml
index fcc89dfc1..22d425b10 100644
--- a/.github/workflows/ci_docs.yml
+++ b/.github/workflows/ci_docs.yml
@@ -126,10 +126,6 @@ jobs:
         shell: bash
         run: ./koch boot -d:release
 
-      - name: 'Clone fusion'
-        shell: bash
-        run: ./koch fusion
-
       - name: 'Build documentation'
         shell: bash
         run: ./koch doc --git.commit:devel
diff --git a/.gitignore b/.gitignore
index 5adaa5e88..e71fdf352 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,7 +66,7 @@ testament.db
 /tests/**/*.js
 /csources
 /dist/
-/lib/fusion
+# /lib/fusion # fusion is now unbundled; `git status` should reveal if it's there so users can act on it
 
 # Private directories and files (IDEs)
 .*/
diff --git a/changelog.md b/changelog.md
index 7fe5a4ffc..51df5d226 100644
--- a/changelog.md
+++ b/changelog.md
@@ -187,3 +187,6 @@ with other backends. see #9125. Use `-d:nimLegacyJsRound` for previous behavior.
   - cell alignment is not supported, i.e. alignment annotations in a delimiter
     row (`:---`, `:--:`, `---:`) are ignored,
   - every table row must start with `|`, e.g. `| cell 1 | cell 2 |`.
+
+- `fusion` is now un-bundled from nim, `./koch fusion` will
+  install it via nimble at a fixed hash.
diff --git a/compiler/installer.ini b/compiler/installer.ini
index 2f11d0df9..fb5081117 100644
--- a/compiler/installer.ini
+++ b/compiler/installer.ini
@@ -76,7 +76,6 @@ Files: "lib"
 [Other]
 Files: "examples"
 Files: "dist/nimble"
-Files: "dist/fusion"
 
 Files: "tests"
 
diff --git a/koch.nim b/koch.nim
index 91e0fbdf0..5f5791b86 100644
--- a/koch.nim
+++ b/koch.nim
@@ -11,8 +11,9 @@
 
 const
   NimbleStableCommit = "324de9202fb3db82b266e7350731d1ec41013a2b" # master
-  FusionStableCommit = "372ee4313827ef9f2ea388840f7d6b46c2b1b014"
-
+  # examples of possible values: #head, #ea82b54, 1.2.3
+  FusionStableHash = "#372ee4313827ef9f2ea388840f7d6b46c2b1b014"
+  HeadHash = "#head"
 when not defined(windows):
   const
     Z3StableCommit = "65de3f748a6812eecd7db7c478d5fc54424d368b" # the version of Z3 that DrNim uses
@@ -66,7 +67,8 @@ Possible Commands:
                            e.g. nimble)
                            doesn't require network connectivity
   nimble                   builds the Nimble tool
-  fusion                   clone fusion into the working tree
+  fusion                   installs fusion via Nimble
+
 Boot options:
   -d:release               produce a release version of the compiler
   -d:nimUseLinenoise       use the linenoise library for interactive mode
@@ -180,14 +182,7 @@ proc bundleWinTools(args: string) =
     nimCompile(r"tools\downloader.nim",
                options = r"--cc:vcc --app:gui -d:ssl --noNimblePath --path:..\ui " & args)
 
-proc bundleFusion(latest: bool) =
-  let commit = if latest: "HEAD" else: FusionStableCommit
-  cloneDependency(distDir, "https://github.com/nim-lang/fusion.git", commit,
-                  allowBundled = true)
-  copyDir(distDir / "fusion" / "src" / "fusion", "lib" / "fusion")
-
 proc zip(latest: bool; args: string) =
-  bundleFusion(latest)
   bundleNimbleExe(latest, args)
   bundleNimsuggest(args)
   bundleNimpretty(args)
@@ -227,7 +222,6 @@ proc buildTools(args: string = "") =
                  options = "-d:release " & args)
 
 proc nsis(latest: bool; args: string) =
-  bundleFusion(latest)
   bundleNimbleExe(latest, args)
   bundleNimsuggest(args)
   bundleWinTools(args)
@@ -694,12 +688,13 @@ when isMainModule:
       of "tools":
         buildTools(op.cmdLineRest)
         bundleNimbleExe(latest, op.cmdLineRest)
-        bundleFusion(latest)
       of "pushcsource", "pushcsources": pushCsources()
       of "valgrind": valgrind(op.cmdLineRest)
       of "c2nim": bundleC2nim(op.cmdLineRest)
       of "drnim": buildDrNim(op.cmdLineRest)
-      of "fusion": bundleFusion(latest)
+      of "fusion":
+        let suffix = if latest: HeadHash else: FusionStableHash
+        exec("nimble install -y fusion@$#" % suffix)
       else: showHelp()
       break
     of cmdEnd: break
diff --git a/tools/kochdocs.nim b/tools/kochdocs.nim
index 8ae0b6ed4..992725a2e 100644
--- a/tools/kochdocs.nim
+++ b/tools/kochdocs.nim
@@ -190,7 +190,7 @@ lib/system/widestrs.nim
   proc follow(a: PathEntry): bool =
     result = a.path.lastPathPart notin ["nimcache", htmldocsDirname,
                                         "includes", "deprecated", "genode"] and
-      not a.path.isRelativeTo("lib/fusion")
+      not a.path.isRelativeTo("lib/fusion") # fusion was un-bundled but we need to keep this in case user has it installed
   for entry in walkDirRecFilter("lib", follow = follow):
     let a = entry.path
     if entry.kind != pcFile or a.splitFile.ext != ".nim" or