mirror of
https://git.freebsd.org/ports.git
synced 2025-04-30 02:26:38 -04:00
320 lines
14 KiB
Nim
320 lines
14 KiB
Nim
--- koch.nim.orig 2025-02-06 01:49:40 UTC
|
|
+++ koch.nim
|
|
@@ -150,31 +150,31 @@ proc csource(args: string) =
|
|
"--main:compiler/nim.nim compiler/installer.ini $1") %
|
|
[args, VersionAsString, compileNimInst])
|
|
|
|
-proc bundleC2nim(args: string) =
|
|
- cloneDependency(distDir, "https://github.com/nim-lang/c2nim.git")
|
|
- nimCompile("dist/c2nim/c2nim",
|
|
- options = "--noNimblePath --path:. " & args)
|
|
+#proc bundleC2nim(args: string) =
|
|
+# cloneDependency(distDir, "https://github.com/nim-lang/c2nim.git")
|
|
+# nimCompile("dist/c2nim/c2nim",
|
|
+# options = "--noNimblePath --path:. " & args)
|
|
|
|
-proc bundleNimbleExe(latest: bool, args: string) =
|
|
- let commit = if latest: "HEAD" else: NimbleStableCommit
|
|
- cloneDependency(distDir, "https://github.com/nim-lang/nimble.git",
|
|
- commit = commit, allowBundled = true)
|
|
- updateSubmodules(distDir / "nimble", allowBundled = true)
|
|
- nimCompile("dist/nimble/src/nimble.nim",
|
|
- options = "-d:release --noNimblePath " & args)
|
|
- const zippyTests = "dist/nimble/vendor/zippy/tests"
|
|
- if dirExists(zippyTests):
|
|
- removeDir(zippyTests)
|
|
+#proc bundleNimbleExe(latest: bool, args: string) =
|
|
+# let commit = if latest: "HEAD" else: NimbleStableCommit
|
|
+# cloneDependency(distDir, "https://github.com/nim-lang/nimble.git",
|
|
+# commit = commit, allowBundled = true)
|
|
+# updateSubmodules(distDir / "nimble", allowBundled = true)
|
|
+# nimCompile("dist/nimble/src/nimble.nim",
|
|
+# options = "-d:release --noNimblePath " & args)
|
|
+# const zippyTests = "dist/nimble/vendor/zippy/tests"
|
|
+# if dirExists(zippyTests):
|
|
+# removeDir(zippyTests)
|
|
|
|
-proc bundleAtlasExe(latest: bool, args: string) =
|
|
- let commit = if latest: "HEAD" else: AtlasStableCommit
|
|
- cloneDependency(distDir, "https://github.com/nim-lang/atlas.git",
|
|
- commit = commit, allowBundled = true)
|
|
- cloneDependency(distDir / "atlas" / distDir, "https://github.com/nim-lang/sat.git",
|
|
- commit = SatStableCommit, allowBundled = true)
|
|
- # installer.ini expects it under $nim/bin
|
|
- nimCompile("dist/atlas/src/atlas.nim",
|
|
- options = "-d:release --noNimblePath -d:nimAtlasBootstrap " & args)
|
|
+#proc bundleAtlasExe(latest: bool, args: string) =
|
|
+# let commit = if latest: "HEAD" else: AtlasStableCommit
|
|
+# cloneDependency(distDir, "https://github.com/nim-lang/atlas.git",
|
|
+# commit = commit, allowBundled = true)
|
|
+# cloneDependency(distDir / "atlas" / distDir, "https://github.com/nim-lang/sat.git",
|
|
+# commit = SatStableCommit, allowBundled = true)
|
|
+# # installer.ini expects it under $nim/bin
|
|
+# nimCompile("dist/atlas/src/atlas.nim",
|
|
+# options = "-d:release --noNimblePath -d:nimAtlasBootstrap " & args)
|
|
|
|
proc bundleNimsuggest(args: string) =
|
|
nimCompileFold("Compile nimsuggest", "nimsuggest/nimsuggest.nim",
|
|
@@ -205,14 +205,14 @@ proc bundleWinTools(args: string) =
|
|
nimCompile(r"tools\downloader.nim",
|
|
options = r"--cc:vcc --app:gui -d:ssl --noNimblePath --path:..\ui " & args)
|
|
|
|
-proc bundleChecksums(latest: bool) =
|
|
- let commit = if latest: "HEAD" else: ChecksumsStableCommit
|
|
- cloneDependency(distDir, "https://github.com/nim-lang/checksums.git", commit, allowBundled = true)
|
|
+#proc bundleChecksums(latest: bool) =
|
|
+# let commit = if latest: "HEAD" else: ChecksumsStableCommit
|
|
+# cloneDependency(distDir, "https://github.com/nim-lang/checksums.git", commit, allowBundled = true)
|
|
|
|
proc zip(latest: bool; args: string) =
|
|
- bundleChecksums(latest)
|
|
- bundleNimbleExe(latest, args)
|
|
- bundleAtlasExe(latest, args)
|
|
+ #bundleChecksums(latest)
|
|
+ #bundleNimbleExe(latest, args)
|
|
+ #bundleAtlasExe(latest, args)
|
|
bundleNimsuggest(args)
|
|
bundleNimpretty(args)
|
|
bundleWinTools(args)
|
|
@@ -221,15 +221,15 @@ proc zip(latest: bool; args: string) =
|
|
exec("$# --var:version=$# --var:mingw=none --main:compiler/nim.nim zip compiler/installer.ini" %
|
|
["tools/niminst/niminst".exe, VersionAsString])
|
|
|
|
-proc ensureCleanGit() =
|
|
- let (outp, status) = osproc.execCmdEx("git diff")
|
|
- if outp.len != 0:
|
|
- quit "Not a clean git repository; 'git diff' not empty!"
|
|
- if status != 0:
|
|
- quit "Not a clean git repository; 'git diff' returned non-zero!"
|
|
+#proc ensureCleanGit() =
|
|
+# let (outp, status) = osproc.execCmdEx("git diff")
|
|
+# if outp.len != 0:
|
|
+# quit "Not a clean git repository; 'git diff' not empty!"
|
|
+# if status != 0:
|
|
+# quit "Not a clean git repository; 'git diff' returned non-zero!"
|
|
|
|
proc xz(latest: bool; args: string) =
|
|
- ensureCleanGit()
|
|
+ #ensureCleanGit()
|
|
nimexec("cc -r $2 --var:version=$1 --var:mingw=none --main:compiler/nim.nim scripts compiler/installer.ini" %
|
|
[VersionAsString, compileNimInst])
|
|
exec("$# --var:version=$# --var:mingw=none --main:compiler/nim.nim xz compiler/installer.ini" %
|
|
@@ -264,9 +264,9 @@ proc nsis(latest: bool; args: string) =
|
|
nimCompileFold("Compile testament", "testament/testament.nim", options = "-d:release " & args)
|
|
|
|
proc nsis(latest: bool; args: string) =
|
|
- bundleChecksums(latest)
|
|
- bundleNimbleExe(latest, args)
|
|
- bundleAtlasExe(latest, args)
|
|
+ #bundleChecksums(latest)
|
|
+ #bundleNimbleExe(latest, args)
|
|
+ #bundleAtlasExe(latest, args)
|
|
bundleNimsuggest(args)
|
|
bundleWinTools(args)
|
|
# make sure we have generated the niminst executables:
|
|
@@ -286,21 +286,21 @@ proc install(args: string) =
|
|
geninstall()
|
|
exec("sh ./install.sh $#" % args)
|
|
|
|
-proc installDeps(dep: string, commit = "") =
|
|
- # the hashes/urls are version controlled here, so can be changed seamlessly
|
|
- # and tied to a nim release (mimicking git submodules)
|
|
- var commit = commit
|
|
- case dep
|
|
- of "tinyc":
|
|
- if commit.len == 0: commit = "916cc2f94818a8a382dd8d4b8420978816c1dfb3"
|
|
- cloneDependency(distDir, "https://github.com/timotheecour/nim-tinyc-archive", commit)
|
|
- of "libffi":
|
|
- # technically a nimble package, however to play nicely with --noNimblePath,
|
|
- # let's just clone it wholesale:
|
|
- if commit.len == 0: commit = "bb2bdaf1a29a4bff6fbd8ae4695877cbb3ec783e"
|
|
- cloneDependency(distDir, "https://github.com/Araq/libffi", commit)
|
|
- else: doAssert false, "unsupported: " & dep
|
|
- # xxx: also add linenoise, niminst etc, refs https://github.com/nim-lang/RFCs/issues/206
|
|
+#proc installDeps(dep: string, commit = "") =
|
|
+# # the hashes/urls are version controlled here, so can be changed seamlessly
|
|
+# # and tied to a nim release (mimicking git submodules)
|
|
+# var commit = commit
|
|
+# case dep
|
|
+# of "tinyc":
|
|
+# if commit.len == 0: commit = "916cc2f94818a8a382dd8d4b8420978816c1dfb3"
|
|
+# cloneDependency(distDir, "https://github.com/timotheecour/nim-tinyc-archive", commit)
|
|
+# of "libffi":
|
|
+# # technically a nimble package, however to play nicely with --noNimblePath,
|
|
+# # let's just clone it wholesale:
|
|
+# if commit.len == 0: commit = "bb2bdaf1a29a4bff6fbd8ae4695877cbb3ec783e"
|
|
+# cloneDependency(distDir, "https://github.com/Araq/libffi", commit)
|
|
+# else: doAssert false, "unsupported: " & dep
|
|
+# # xxx: also add linenoise, niminst etc, refs https://github.com/nim-lang/RFCs/issues/206
|
|
|
|
# -------------- boot ---------------------------------------------------------
|
|
|
|
@@ -344,11 +344,11 @@ proc boot(args: string, skipIntegrityCheck: bool) =
|
|
let smartNimcache = (if "release" in args or "danger" in args: "nimcache/r_" else: "nimcache/d_") &
|
|
hostOS & "_" & hostCPU
|
|
|
|
- bundleChecksums(false)
|
|
+ #bundleChecksums(false)
|
|
|
|
let usingLibFFI = "nimHasLibFFI" in args
|
|
- if usingLibFFI and not dirExists("dist/libffi"):
|
|
- installDeps("libffi")
|
|
+ #if usingLibFFI and not dirExists("dist/libffi"):
|
|
+ # installDeps("libffi")
|
|
|
|
let nimStart = findStartNim().quoteShell()
|
|
let times = 2 - ord(skipIntegrityCheck)
|
|
@@ -507,7 +507,7 @@ proc temp(args: string) =
|
|
result[1].add " " & quoteShell(args[i])
|
|
inc i
|
|
|
|
- bundleChecksums(false)
|
|
+ #bundleChecksums(false)
|
|
|
|
let d = getAppDir()
|
|
let output = d / "compiler" / "nim".exe
|
|
@@ -551,27 +551,27 @@ proc icTest(args: string) =
|
|
exec(cmd)
|
|
inc i
|
|
|
|
-proc buildDrNim(args: string) =
|
|
- if not dirExists("dist/nimz3"):
|
|
- exec("git clone https://github.com/zevv/nimz3.git dist/nimz3")
|
|
- when defined(windows):
|
|
- if not dirExists("dist/dlls"):
|
|
- exec("git clone -q https://github.com/nim-lang/dlls.git dist/dlls")
|
|
- copyExe("dist/dlls/libz3.dll", "bin/libz3.dll")
|
|
- execFold("build drnim", "nim c -o:$1 $2 drnim/drnim" % ["bin/drnim".exe, args])
|
|
- else:
|
|
- if not dirExists("dist/z3"):
|
|
- exec("git clone -q https://github.com/Z3Prover/z3.git dist/z3")
|
|
- withDir("dist/z3"):
|
|
- exec("git fetch")
|
|
- exec("git checkout " & Z3StableCommit)
|
|
- createDir("build")
|
|
- withDir("build"):
|
|
- exec("""cmake -DZ3_BUILD_LIBZ3_SHARED=FALSE -G "Unix Makefiles" ../""")
|
|
- exec("make -j4")
|
|
- execFold("build drnim", "nim cpp --dynlibOverride=libz3 -o:$1 $2 drnim/drnim" % ["bin/drnim".exe, args])
|
|
- # always run the tests for now:
|
|
- exec("testament/testament".exe & " --nim:" & "drnim".exe & " pat drnim/tests")
|
|
+#proc buildDrNim(args: string) =
|
|
+# if not dirExists("dist/nimz3"):
|
|
+# exec("git clone https://github.com/zevv/nimz3.git dist/nimz3")
|
|
+# when defined(windows):
|
|
+# if not dirExists("dist/dlls"):
|
|
+# exec("git clone -q https://github.com/nim-lang/dlls.git dist/dlls")
|
|
+# copyExe("dist/dlls/libz3.dll", "bin/libz3.dll")
|
|
+# execFold("build drnim", "nim c -o:$1 $2 drnim/drnim" % ["bin/drnim".exe, args])
|
|
+# else:
|
|
+# if not dirExists("dist/z3"):
|
|
+# exec("git clone -q https://github.com/Z3Prover/z3.git dist/z3")
|
|
+# withDir("dist/z3"):
|
|
+# exec("git fetch")
|
|
+# exec("git checkout " & Z3StableCommit)
|
|
+# createDir("build")
|
|
+# withDir("build"):
|
|
+# exec("""cmake -DZ3_BUILD_LIBZ3_SHARED=FALSE -G "Unix Makefiles" ../""")
|
|
+# exec("make -j4")
|
|
+# execFold("build drnim", "nim cpp --dynlibOverride=libz3 -o:$1 $2 drnim/drnim" % ["bin/drnim".exe, args])
|
|
+# # always run the tests for now:
|
|
+# exec("testament/testament".exe & " --nim:" & "drnim".exe & " pat drnim/tests")
|
|
|
|
|
|
proc hostInfo(): string =
|
|
@@ -619,14 +619,14 @@ proc runCI(cmd: string) =
|
|
# BUG: with initOptParser, `--batch:'' all` interprets `all` as the argument of --batch, pending bug #14343
|
|
execFold("Run tester", "nim c -r --putenv:NIM_TESTAMENT_REMOTE_NETWORKING:1 -d:nimStrictMode testament/testament $# all -d:nimCoroutines" % batchParam)
|
|
|
|
- block: # nimHasLibFFI:
|
|
- when defined(posix): # windows can be handled in future PR's
|
|
- installDeps("libffi")
|
|
- const nimFFI = "bin/nim.ctffi"
|
|
- # no need to bootstrap with koch boot (would be slower)
|
|
- let backend = if doUseCpp(): "cpp" else: "c"
|
|
- execFold("build with -d:nimHasLibFFI", "nim $1 -d:release --noNimblePath -d:nimHasLibFFI --path:./dist -o:$2 compiler/nim.nim" % [backend, nimFFI])
|
|
- execFold("test with -d:nimHasLibFFI", "$1 $2 -r testament/testament --nim:$1 r tests/misc/trunner.nim -d:nimTrunnerFfi" % [nimFFI, backend])
|
|
+ #block: # nimHasLibFFI:
|
|
+ # when defined(posix): # windows can be handled in future PR's
|
|
+ # installDeps("libffi")
|
|
+ # const nimFFI = "bin/nim.ctffi"
|
|
+ # # no need to bootstrap with koch boot (would be slower)
|
|
+ # let backend = if doUseCpp(): "cpp" else: "c"
|
|
+ # execFold("build with -d:nimHasLibFFI", "nim $1 -d:release --noNimblePath -d:nimHasLibFFI --path:./dist -o:$2 compiler/nim.nim" % [backend, nimFFI])
|
|
+ # execFold("test with -d:nimHasLibFFI", "$1 $2 -r testament/testament --nim:$1 r tests/misc/trunner.nim -d:nimTrunnerFfi" % [nimFFI, backend])
|
|
|
|
execFold("Run nimdoc tests", "nim r nimdoc/tester")
|
|
execFold("Run rst2html tests", "nim r nimdoc/rsttester")
|
|
@@ -698,18 +698,18 @@ proc showHelp(success: bool) =
|
|
quit(HelpText % [VersionAsString & spaces(44-len(VersionAsString)),
|
|
CompileDate, CompileTime], if success: QuitSuccess else: QuitFailure)
|
|
|
|
-proc branchDone() =
|
|
- let thisBranch = execProcess("git symbolic-ref --short HEAD").strip()
|
|
- if thisBranch != "devel" and thisBranch != "":
|
|
- exec("git checkout devel")
|
|
- exec("git branch -D " & thisBranch)
|
|
- exec("git pull --rebase")
|
|
+#proc branchDone() =
|
|
+# let thisBranch = execProcess("git symbolic-ref --short HEAD").strip()
|
|
+# if thisBranch != "devel" and thisBranch != "":
|
|
+# exec("git checkout devel")
|
|
+# exec("git branch -D " & thisBranch)
|
|
+# exec("git pull --rebase")
|
|
|
|
when isMainModule:
|
|
var op = initOptParser()
|
|
var
|
|
latest = false
|
|
- localDocsOnly = false
|
|
+ localDocsOnly = true
|
|
localDocsOut = ""
|
|
skipIntegrityCheck = false
|
|
while true:
|
|
@@ -745,34 +745,34 @@ when isMainModule:
|
|
of "distrohelper": geninstall()
|
|
of "install": install(op.cmdLineRest)
|
|
of "testinstall": testUnixInstall(op.cmdLineRest)
|
|
- of "installdeps": installDeps(op.cmdLineRest)
|
|
+ #of "installdeps": installDeps(op.cmdLineRest)
|
|
of "runci": runCI(op.cmdLineRest)
|
|
of "test", "tests": tests(op.cmdLineRest)
|
|
of "temp": temp(op.cmdLineRest)
|
|
of "xtemp": xtemp(op.cmdLineRest)
|
|
of "wintools": bundleWinTools(op.cmdLineRest)
|
|
- of "nimble": bundleNimbleExe(latest, op.cmdLineRest)
|
|
- of "atlas": bundleAtlasExe(latest, op.cmdLineRest)
|
|
+ #of "nimble": bundleNimbleExe(latest, op.cmdLineRest)
|
|
+ #of "atlas": bundleAtlasExe(latest, op.cmdLineRest)
|
|
of "nimsuggest": bundleNimsuggest(op.cmdLineRest)
|
|
# toolsNoNimble is kept for backward compatibility with build scripts
|
|
of "toolsnonimble", "toolsnoexternal":
|
|
buildTools(op.cmdLineRest)
|
|
of "tools":
|
|
buildTools(op.cmdLineRest)
|
|
- bundleNimbleExe(latest, op.cmdLineRest)
|
|
- bundleAtlasExe(latest, op.cmdLineRest)
|
|
- of "checksums":
|
|
- bundleChecksums(latest)
|
|
- of "pushcsource":
|
|
- quit "use this instead: https://github.com/nim-lang/csources_v1/blob/master/push_c_code.nim"
|
|
+ #bundleNimbleExe(latest, op.cmdLineRest)
|
|
+ #bundleAtlasExe(latest, op.cmdLineRest)
|
|
+ #of "checksums":
|
|
+ # bundleChecksums(latest)
|
|
+ #of "pushcsource":
|
|
+ # quit "use this instead: https://github.com/nim-lang/csources_v1/blob/master/push_c_code.nim"
|
|
of "valgrind": valgrind(op.cmdLineRest)
|
|
- of "c2nim": bundleC2nim(op.cmdLineRest)
|
|
- of "drnim": buildDrNim(op.cmdLineRest)
|
|
+ #of "c2nim": bundleC2nim(op.cmdLineRest)
|
|
+ #of "drnim": buildDrNim(op.cmdLineRest)
|
|
of "fusion":
|
|
let suffix = if latest: HeadHash else: FusionStableHash
|
|
exec("nimble install -y fusion@$#" % suffix)
|
|
of "ic": icTest(op.cmdLineRest)
|
|
- of "branchdone": branchDone()
|
|
+ #of "branchdone": branchDone()
|
|
else: showHelp(success = false)
|
|
break
|
|
of cmdEnd:
|